Merge remote-tracking branch 'adafruit/main' into cp-flow
This commit is contained in:
commit
e285b5b98c
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@ -177,6 +177,7 @@ jobs:
|
|||||||
- "8086_commander"
|
- "8086_commander"
|
||||||
- "ADM_B_NRF52840_1"
|
- "ADM_B_NRF52840_1"
|
||||||
- "TG-Watch"
|
- "TG-Watch"
|
||||||
|
- "adafruit_feather_rp2040"
|
||||||
- "aloriumtech_evo_m51"
|
- "aloriumtech_evo_m51"
|
||||||
- "aramcon_badge_2019"
|
- "aramcon_badge_2019"
|
||||||
- "arduino_mkr1300"
|
- "arduino_mkr1300"
|
||||||
@ -294,6 +295,7 @@ jobs:
|
|||||||
- "pyruler"
|
- "pyruler"
|
||||||
- "qtpy_m0"
|
- "qtpy_m0"
|
||||||
- "qtpy_m0_haxpress"
|
- "qtpy_m0_haxpress"
|
||||||
|
- "raspberry_pi_pico"
|
||||||
- "raytac_mdbt50q-db-40"
|
- "raytac_mdbt50q-db-40"
|
||||||
- "robohatmm1_m4"
|
- "robohatmm1_m4"
|
||||||
- "sam32"
|
- "sam32"
|
||||||
@ -315,6 +317,7 @@ jobs:
|
|||||||
- "spresense"
|
- "spresense"
|
||||||
- "stackrduino_m0_pro"
|
- "stackrduino_m0_pro"
|
||||||
- "stm32f411ce_blackpill"
|
- "stm32f411ce_blackpill"
|
||||||
|
- "stm32f411ce_blackpill_with_flash"
|
||||||
- "stm32f411ve_discovery"
|
- "stm32f411ve_discovery"
|
||||||
- "stm32f412zg_discovery"
|
- "stm32f412zg_discovery"
|
||||||
- "stm32f4_discovery"
|
- "stm32f4_discovery"
|
||||||
@ -464,7 +467,7 @@ jobs:
|
|||||||
id: idf-cache
|
id: idf-cache
|
||||||
with:
|
with:
|
||||||
path: ${{ github.workspace }}/.idf_tools
|
path: ${{ github.workspace }}/.idf_tools
|
||||||
key: ${{ runner.os }}-idf-tools-${{ hashFiles('.git/modules/ports/esp32s2/esp-idf/HEAD') }}-20210114
|
key: ${{ runner.os }}-idf-tools-${{ hashFiles('.git/modules/ports/esp32s2/esp-idf/HEAD') }}-20210122
|
||||||
- name: Clone IDF submodules
|
- name: Clone IDF submodules
|
||||||
run: |
|
run: |
|
||||||
(cd $IDF_PATH && git submodule update --init)
|
(cd $IDF_PATH && git submodule update --init)
|
||||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -171,3 +171,6 @@
|
|||||||
[submodule "frozen/Adafruit_CircuitPython_LC709203F"]
|
[submodule "frozen/Adafruit_CircuitPython_LC709203F"]
|
||||||
path = frozen/Adafruit_CircuitPython_LC709203F
|
path = frozen/Adafruit_CircuitPython_LC709203F
|
||||||
url = https://github.com/adafruit/Adafruit_CircuitPython_LC709203F
|
url = https://github.com/adafruit/Adafruit_CircuitPython_LC709203F
|
||||||
|
[submodule "ports/raspberrypi/sdk"]
|
||||||
|
path = ports/raspberrypi/sdk
|
||||||
|
url = https://github.com/raspberrypi/pico-sdk.git
|
||||||
|
1
Makefile
1
Makefile
@ -255,6 +255,7 @@ stubs:
|
|||||||
@$(PYTHON) tools/extract_pyi.py shared-bindings/ $(STUBDIR)
|
@$(PYTHON) tools/extract_pyi.py shared-bindings/ $(STUBDIR)
|
||||||
@$(PYTHON) tools/extract_pyi.py extmod/ulab/code/ $(STUBDIR)/ulab
|
@$(PYTHON) tools/extract_pyi.py extmod/ulab/code/ $(STUBDIR)/ulab
|
||||||
@$(PYTHON) tools/extract_pyi.py ports/atmel-samd/bindings $(STUBDIR)
|
@$(PYTHON) tools/extract_pyi.py ports/atmel-samd/bindings $(STUBDIR)
|
||||||
|
@$(PYTHON) tools/extract_pyi.py ports/raspberrypi/bindings $(STUBDIR)
|
||||||
@$(PYTHON) setup.py -q sdist
|
@$(PYTHON) setup.py -q sdist
|
||||||
|
|
||||||
.PHONY: check-stubs
|
.PHONY: check-stubs
|
||||||
|
@ -125,7 +125,7 @@ Behavior
|
|||||||
get back into normal mode.
|
get back into normal mode.
|
||||||
- RGB status LED indicating CircuitPython state, and errors through a sequence of colored flashes.
|
- RGB status LED indicating CircuitPython state, and errors through a sequence of colored flashes.
|
||||||
- Re-runs ``code.py`` or other main file after file system writes over USB mass storage. (Disable with
|
- Re-runs ``code.py`` or other main file after file system writes over USB mass storage. (Disable with
|
||||||
``samd.disable_autoreload()``)
|
``supervisor.disable_autoreload()``)
|
||||||
- Entering the REPL after the main code is finished requires a key press which enters the REPL and
|
- Entering the REPL after the main code is finished requires a key press which enters the REPL and
|
||||||
disables autoreload.
|
disables autoreload.
|
||||||
- Main is one of these: ``code.txt``, ``code.py``, ``main.py``,
|
- Main is one of these: ``code.txt``, ``code.py``, ``main.py``,
|
||||||
|
1
conf.py
1
conf.py
@ -189,6 +189,7 @@ exclude_patterns = ["**/build*",
|
|||||||
"ports/nrf/nrfx",
|
"ports/nrf/nrfx",
|
||||||
"ports/nrf/peripherals",
|
"ports/nrf/peripherals",
|
||||||
"ports/nrf/usb",
|
"ports/nrf/usb",
|
||||||
|
"ports/raspberrypi/sdk",
|
||||||
"ports/stm/st_driver",
|
"ports/stm/st_driver",
|
||||||
"ports/stm/packages",
|
"ports/stm/packages",
|
||||||
"ports/stm/peripherals",
|
"ports/stm/peripherals",
|
||||||
|
@ -520,7 +520,9 @@ properties.
|
|||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
| ``temperature`` | float | degrees centigrade |
|
| ``temperature`` | float | degrees centigrade |
|
||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
| ``eCO2`` | float | equivalent CO2 in ppm |
|
| ``CO2`` | float | measured CO2 in ppm |
|
||||||
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
|
| ``eCO2`` | float | equivalent/estimated CO2 in ppm (estimated from some other measurement) |
|
||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
| ``TVOC`` | float | Total Volatile Organic Compounds in ppb |
|
| ``TVOC`` | float | Total Volatile Organic Compounds in ppb |
|
||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
:mod:`uerrno` -- system error codes
|
:mod:`errno` -- system error codes
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
.. include:: ../templates/unsupported_in_circuitpython.inc
|
.. module:: errno
|
||||||
|
|
||||||
.. module:: uerrno
|
|
||||||
:synopsis: system error codes
|
:synopsis: system error codes
|
||||||
|
|
||||||
|see_cpython_module| :mod:`cpython:errno`.
|
|see_cpython_module| :mod:`cpython:errno`.
|
||||||
@ -22,7 +20,7 @@ Constants
|
|||||||
try:
|
try:
|
||||||
os.mkdir("my_dir")
|
os.mkdir("my_dir")
|
||||||
except OSError as exc:
|
except OSError as exc:
|
||||||
if exc.args[0] == uerrno.EEXIST:
|
if exc.args[0] == errno.EEXIST:
|
||||||
print("Directory already exists")
|
print("Directory already exists")
|
||||||
|
|
||||||
.. data:: errorcode
|
.. data:: errorcode
|
||||||
@ -30,5 +28,5 @@ Constants
|
|||||||
Dictionary mapping numeric error codes to strings with symbolic error
|
Dictionary mapping numeric error codes to strings with symbolic error
|
||||||
code (see above)::
|
code (see above)::
|
||||||
|
|
||||||
>>> print(uerrno.errorcode[uerrno.EEXIST])
|
>>> print(errno.errorcode[uerrno.EEXIST])
|
||||||
EEXIST
|
EEXIST
|
@ -1,85 +0,0 @@
|
|||||||
:mod:`esp` --- functions related to the ESP8266
|
|
||||||
===============================================
|
|
||||||
|
|
||||||
.. include:: ../templates/unsupported_in_circuitpython.inc
|
|
||||||
|
|
||||||
.. module:: esp
|
|
||||||
:synopsis: functions related to the ESP8266
|
|
||||||
|
|
||||||
The ``esp`` module contains specific functions related to the ESP8266 module.
|
|
||||||
|
|
||||||
|
|
||||||
Functions
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. function:: sleep_type([sleep_type])
|
|
||||||
|
|
||||||
Get or set the sleep type.
|
|
||||||
|
|
||||||
If the *sleep_type* parameter is provided, sets the sleep type to its
|
|
||||||
value. If the function is called without parameters, returns the current
|
|
||||||
sleep type.
|
|
||||||
|
|
||||||
The possible sleep types are defined as constants:
|
|
||||||
|
|
||||||
* ``SLEEP_NONE`` -- all functions enabled,
|
|
||||||
* ``SLEEP_MODEM`` -- modem sleep, shuts down the WiFi Modem circuit.
|
|
||||||
* ``SLEEP_LIGHT`` -- light sleep, shuts down the WiFi Modem circuit
|
|
||||||
and suspends the processor periodically.
|
|
||||||
|
|
||||||
The system enters the set sleep mode automatically when possible.
|
|
||||||
|
|
||||||
.. function:: deepsleep(time=0)
|
|
||||||
|
|
||||||
Enter deep sleep.
|
|
||||||
|
|
||||||
The whole module powers down, except for the RTC clock circuit, which can
|
|
||||||
be used to restart the module after the specified time if the pin 16 is
|
|
||||||
connected to the reset pin. Otherwise the module will sleep until manually
|
|
||||||
reset.
|
|
||||||
|
|
||||||
.. function:: flash_id()
|
|
||||||
|
|
||||||
Read the device ID of the flash memory.
|
|
||||||
|
|
||||||
.. function:: flash_read(byte_offset, length_or_buffer)
|
|
||||||
|
|
||||||
.. function:: flash_write(byte_offset, bytes)
|
|
||||||
|
|
||||||
.. function:: flash_erase(sector_no)
|
|
||||||
|
|
||||||
.. function:: set_native_code_location(start, length)
|
|
||||||
|
|
||||||
Set the location that native code will be placed for execution after it is
|
|
||||||
compiled. Native code is emitted when the ``@micropython.native``,
|
|
||||||
``@micropython.viper`` and ``@micropython.asm_xtensa`` decorators are applied
|
|
||||||
to a function. The ESP8266 must execute code from either iRAM or the lower
|
|
||||||
1MByte of flash (which is memory mapped), and this function controls the
|
|
||||||
location.
|
|
||||||
|
|
||||||
If *start* and *length* are both ``None`` then the native code location is
|
|
||||||
set to the unused portion of memory at the end of the iRAM1 region. The
|
|
||||||
size of this unused portion depends on the firmware and is typically quite
|
|
||||||
small (around 500 bytes), and is enough to store a few very small
|
|
||||||
functions. The advantage of using this iRAM1 region is that it does not
|
|
||||||
get worn out by writing to it.
|
|
||||||
|
|
||||||
If neither *start* nor *length* are ``None`` then they should be integers.
|
|
||||||
*start* should specify the byte offset from the beginning of the flash at
|
|
||||||
which native code should be stored. *length* specifies how many bytes of
|
|
||||||
flash from *start* can be used to store native code. *start* and *length*
|
|
||||||
should be multiples of the sector size (being 4096 bytes). The flash will
|
|
||||||
be automatically erased before writing to it so be sure to use a region of
|
|
||||||
flash that is not otherwise used, for example by the firmware or the
|
|
||||||
filesystem.
|
|
||||||
|
|
||||||
When using the flash to store native code *start+length* must be less
|
|
||||||
than or equal to 1MByte. Note that the flash can be worn out if repeated
|
|
||||||
erasures (and writes) are made so use this feature sparingly.
|
|
||||||
In particular, native code needs to be recompiled and rewritten to flash
|
|
||||||
on each boot (including wake from deepsleep).
|
|
||||||
|
|
||||||
In both cases above, using iRAM1 or flash, if there is no more room left
|
|
||||||
in the specified region then the use of a native decorator on a function
|
|
||||||
will lead to `MemoryError` exception being raised during compilation of
|
|
||||||
that function.
|
|
@ -6,35 +6,21 @@ MicroPython libraries
|
|||||||
Python standard libraries and micro-libraries
|
Python standard libraries and micro-libraries
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
These libraries are inherited from MicroPython.
|
The libraries below are inherited from MicroPython.
|
||||||
They are similar to the standard Python libraries with the same name
|
They are similar to the standard Python libraries with the same name.
|
||||||
or with the "u" prefix dropped.
|
|
||||||
They implement a subset of or a variant of the corresponding
|
They implement a subset of or a variant of the corresponding
|
||||||
standard Python library.
|
standard Python library.
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
Though these MicroPython-based libraries are available in CircuitPython,
|
|
||||||
their functionality may change in the future, perhaps significantly.
|
|
||||||
As CircuitPython continues to develop, new versions of these libraries will
|
|
||||||
be created that are more compliant with the standard Python libraries.
|
|
||||||
You may need to change your code later if you rely
|
|
||||||
on any non-standard functionality they currently provide.
|
|
||||||
|
|
||||||
CircuitPython's long-term goal is that code written in CircuitPython
|
CircuitPython's long-term goal is that code written in CircuitPython
|
||||||
using Python standard libraries will be runnable on CPython without changes.
|
using Python standard libraries will be runnable on CPython without changes.
|
||||||
|
|
||||||
Some libraries below are not enabled on CircuitPython builds with
|
These libraries are not enabled on CircuitPython builds with
|
||||||
limited flash memory, usually on non-Express builds:
|
limited flash memory, usually on non-Express builds:
|
||||||
``uerrno``, ``ure``.
|
``binascii``, ``errno``, ``json``, ``re``.
|
||||||
|
|
||||||
Some libraries are not currently enabled in any CircuitPython build, but may be in the future:
|
These libraries are not currently enabled in any CircuitPython build, but may be in the future,
|
||||||
``uio``, ``ujson``, ``uzlib``.
|
with the ``u`` prefix dropped:
|
||||||
|
``uctypes``, ``uhashlib``, ``uzlib``.
|
||||||
Some libraries are only enabled only WiFi-capable ports (ESP8266, nRF)
|
|
||||||
because they are typically used for network software:
|
|
||||||
``binascii``, ``hashlib``, ``uheapq``, ``uselect``, ``ussl``.
|
|
||||||
Not all of these are enabled on all WiFi-capable ports.
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
@ -44,13 +30,14 @@ Not all of these are enabled on all WiFi-capable ports.
|
|||||||
array.rst
|
array.rst
|
||||||
binascii.rst
|
binascii.rst
|
||||||
collections.rst
|
collections.rst
|
||||||
|
errno.rst
|
||||||
gc.rst
|
gc.rst
|
||||||
hashlib.rst
|
hashlib.rst
|
||||||
|
io.rst
|
||||||
|
json.rst
|
||||||
|
re.rst
|
||||||
sys.rst
|
sys.rst
|
||||||
uerrno.rst
|
uctypes.rst
|
||||||
uio.rst
|
|
||||||
ujson.rst
|
|
||||||
ure.rst
|
|
||||||
uselect.rst
|
uselect.rst
|
||||||
usocket.rst
|
usocket.rst
|
||||||
ussl.rst
|
ussl.rst
|
||||||
@ -59,8 +46,8 @@ Not all of these are enabled on all WiFi-capable ports.
|
|||||||
Omitted functions in the ``string`` library
|
Omitted functions in the ``string`` library
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
|
||||||
A few string operations are not enabled on CircuitPython
|
A few string operations are not enabled on small builds
|
||||||
M0 non-Express builds, due to limited flash memory:
|
(usually non-Express), due to limited flash memory:
|
||||||
``string.center()``, ``string.partition()``, ``string.splitlines()``,
|
``string.center()``, ``string.partition()``, ``string.splitlines()``,
|
||||||
``string.reversed()``.
|
``string.reversed()``.
|
||||||
|
|
||||||
@ -78,15 +65,3 @@ versions of CircuitPython.
|
|||||||
btree.rst
|
btree.rst
|
||||||
framebuf.rst
|
framebuf.rst
|
||||||
micropython.rst
|
micropython.rst
|
||||||
network.rst
|
|
||||||
uctypes.rst
|
|
||||||
|
|
||||||
Libraries specific to the ESP8266
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
The following libraries are specific to the ESP8266.
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:maxdepth: 2
|
|
||||||
|
|
||||||
esp.rst
|
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
:mod:`uio` -- input/output streams
|
:mod:`io` -- input/output streams
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
.. include:: ../templates/unsupported_in_circuitpython.inc
|
.. module:: io
|
||||||
|
|
||||||
.. module:: uio
|
|
||||||
:synopsis: input/output streams
|
:synopsis: input/output streams
|
||||||
|
|
||||||
|see_cpython_module| :mod:`cpython:io`.
|
|see_cpython_module| :mod:`cpython:io`.
|
@ -1,9 +1,7 @@
|
|||||||
:mod:`ujson` -- JSON encoding and decoding
|
:mod:`json` -- JSON encoding and decoding
|
||||||
==========================================
|
==========================================
|
||||||
|
|
||||||
.. include:: ../templates/unsupported_in_circuitpython.inc
|
.. module:: json
|
||||||
|
|
||||||
.. module:: ujson
|
|
||||||
:synopsis: JSON encoding and decoding
|
:synopsis: JSON encoding and decoding
|
||||||
|
|
||||||
|see_cpython_module| :mod:`cpython:json`.
|
|see_cpython_module| :mod:`cpython:json`.
|
@ -1,278 +0,0 @@
|
|||||||
****************************************
|
|
||||||
:mod:`network` --- network configuration
|
|
||||||
****************************************
|
|
||||||
|
|
||||||
.. include:: ../templates/unsupported_in_circuitpython.inc
|
|
||||||
|
|
||||||
.. module:: network
|
|
||||||
:noindex:
|
|
||||||
:synopsis: network configuration
|
|
||||||
|
|
||||||
This module provides network drivers and routing configuration. To use this
|
|
||||||
module, a MicroPython variant/build with network capabilities must be installed.
|
|
||||||
Network drivers for specific hardware are available within this module and are
|
|
||||||
used to configure hardware network interface(s). Network services provided
|
|
||||||
by configured interfaces are then available for use via the :mod:`usocket`
|
|
||||||
module.
|
|
||||||
|
|
||||||
For example::
|
|
||||||
|
|
||||||
# connect/ show IP config a specific network interface
|
|
||||||
# see below for examples of specific drivers
|
|
||||||
import network
|
|
||||||
import utime
|
|
||||||
nic = network.Driver(...)
|
|
||||||
if not nic.isconnected():
|
|
||||||
nic.connect()
|
|
||||||
print("Waiting for connection...")
|
|
||||||
while not nic.isconnected():
|
|
||||||
utime.sleep(1)
|
|
||||||
print(nic.ifconfig())
|
|
||||||
|
|
||||||
# now use usocket as usual
|
|
||||||
import usocket as socket
|
|
||||||
addr = socket.getaddrinfo('micropython.org', 80)[0][-1]
|
|
||||||
s = socket.socket()
|
|
||||||
s.connect(addr)
|
|
||||||
s.send(b'GET / HTTP/1.1\r\nHost: micropython.org\r\n\r\n')
|
|
||||||
data = s.recv(1000)
|
|
||||||
s.close()
|
|
||||||
|
|
||||||
Common network adapter interface
|
|
||||||
================================
|
|
||||||
|
|
||||||
This section describes an (implied) abstract base class for all network
|
|
||||||
interface classes implemented by ``MicroPython ports <MicroPython port>``
|
|
||||||
for different hardware. This means that MicroPython does not actually
|
|
||||||
provide ``AbstractNIC`` class, but any actual NIC class, as described
|
|
||||||
in the following sections, implements methods as described here.
|
|
||||||
|
|
||||||
.. class:: AbstractNIC(id=None, ...)
|
|
||||||
|
|
||||||
Instantiate a network interface object. Parameters are network interface
|
|
||||||
dependent. If there are more than one interface of the same type, the first
|
|
||||||
parameter should be `id`.
|
|
||||||
|
|
||||||
.. method:: active([is_active])
|
|
||||||
|
|
||||||
Activate ("up") or deactivate ("down") the network interface, if
|
|
||||||
a boolean argument is passed. Otherwise, query current state if
|
|
||||||
no argument is provided. Most other methods require an active
|
|
||||||
interface (behavior of calling them on inactive interface is
|
|
||||||
undefined).
|
|
||||||
|
|
||||||
.. method:: connect([service_id, key=None, \*, ...])
|
|
||||||
|
|
||||||
Connect the interface to a network. This method is optional, and
|
|
||||||
available only for interfaces which are not "always connected".
|
|
||||||
If no parameters are given, connect to the default (or the only)
|
|
||||||
service. If a single parameter is given, it is the primary identifier
|
|
||||||
of a service to connect to. It may be accompanied by a key
|
|
||||||
(password) required to access said service. There can be further
|
|
||||||
arbitrary keyword-only parameters, depending on the networking medium
|
|
||||||
type and/or particular device. Parameters can be used to: a)
|
|
||||||
specify alternative service identifier types; b) provide additional
|
|
||||||
connection parameters. For various medium types, there are different
|
|
||||||
sets of predefined/recommended parameters, among them:
|
|
||||||
|
|
||||||
* WiFi: *bssid* keyword to connect to a specific BSSID (MAC address)
|
|
||||||
|
|
||||||
.. method:: disconnect()
|
|
||||||
|
|
||||||
Disconnect from network.
|
|
||||||
|
|
||||||
.. method:: isconnected()
|
|
||||||
|
|
||||||
Returns ``True`` if connected to network, otherwise returns ``False``.
|
|
||||||
|
|
||||||
.. method:: scan(\*, ...)
|
|
||||||
|
|
||||||
Scan for the available network services/connections. Returns a
|
|
||||||
list of tuples with discovered service parameters. For various
|
|
||||||
network media, there are different variants of predefined/
|
|
||||||
recommended tuple formats, among them:
|
|
||||||
|
|
||||||
* WiFi: (ssid, bssid, channel, RSSI, authmode, hidden). There
|
|
||||||
may be further fields, specific to a particular device.
|
|
||||||
|
|
||||||
The function may accept additional keyword arguments to filter scan
|
|
||||||
results (e.g. scan for a particular service, on a particular channel,
|
|
||||||
for services of a particular set, etc.), and to affect scan
|
|
||||||
duration and other parameters. Where possible, parameter names
|
|
||||||
should match those in connect().
|
|
||||||
|
|
||||||
.. method:: status()
|
|
||||||
|
|
||||||
Return detailed status of the interface, values are dependent
|
|
||||||
on the network medium/technology.
|
|
||||||
|
|
||||||
.. method:: ifconfig([(ip, subnet, gateway, dns)])
|
|
||||||
|
|
||||||
Get/set IP-level network interface parameters: IP address, subnet mask,
|
|
||||||
gateway and DNS server. When called with no arguments, this method returns
|
|
||||||
a 4-tuple with the above information. To set the above values, pass a
|
|
||||||
4-tuple with the required information. For example::
|
|
||||||
|
|
||||||
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
|
|
||||||
|
|
||||||
.. method:: config('param')
|
|
||||||
config(param=value, ...)
|
|
||||||
|
|
||||||
Get or set general network interface parameters. These methods allow to work
|
|
||||||
with additional parameters beyond standard IP configuration (as dealt with by
|
|
||||||
`ifconfig()`). These include network-specific and hardware-specific
|
|
||||||
parameters and status values. For setting parameters, the keyword argument
|
|
||||||
syntax should be used, and multiple parameters can be set at once. For
|
|
||||||
querying, a parameter name should be quoted as a string, and only one
|
|
||||||
parameter can be queried at a time::
|
|
||||||
|
|
||||||
# Set WiFi access point name (formally known as ESSID) and WiFi channel
|
|
||||||
ap.config(essid='My AP', channel=11)
|
|
||||||
# Query params one by one
|
|
||||||
print(ap.config('essid'))
|
|
||||||
print(ap.config('channel'))
|
|
||||||
# Extended status information also available this way
|
|
||||||
print(sta.config('rssi'))
|
|
||||||
|
|
||||||
.. _network.WLAN:
|
|
||||||
|
|
||||||
Functions
|
|
||||||
=========
|
|
||||||
|
|
||||||
.. function:: phy_mode([mode])
|
|
||||||
|
|
||||||
Get or set the PHY mode.
|
|
||||||
|
|
||||||
If the *mode* parameter is provided, sets the mode to its value. If
|
|
||||||
the function is called without parameters, returns the current mode.
|
|
||||||
|
|
||||||
The possible modes are defined as constants:
|
|
||||||
* ``MODE_11B`` -- IEEE 802.11b,
|
|
||||||
* ``MODE_11G`` -- IEEE 802.11g,
|
|
||||||
* ``MODE_11N`` -- IEEE 802.11n.
|
|
||||||
|
|
||||||
class WLAN
|
|
||||||
==========
|
|
||||||
|
|
||||||
This class provides a driver for WiFi network processor in the ESP8266. Example usage::
|
|
||||||
|
|
||||||
import network
|
|
||||||
# enable station interface and connect to WiFi access point
|
|
||||||
nic = network.WLAN(network.STA_IF)
|
|
||||||
nic.active(True)
|
|
||||||
nic.connect('your-ssid', 'your-password')
|
|
||||||
# now use sockets as usual
|
|
||||||
|
|
||||||
Constructors
|
|
||||||
------------
|
|
||||||
.. class:: WLAN(interface_id)
|
|
||||||
|
|
||||||
Create a WLAN network interface object. Supported interfaces are
|
|
||||||
``network.STA_IF`` (station aka client, connects to upstream WiFi access
|
|
||||||
points) and ``network.AP_IF`` (access point, allows other WiFi clients to
|
|
||||||
connect). Availability of the methods below depends on interface type.
|
|
||||||
For example, only STA interface may `connect()` to an access point.
|
|
||||||
|
|
||||||
Methods
|
|
||||||
-------
|
|
||||||
|
|
||||||
.. method:: wlan.active([is_active])
|
|
||||||
|
|
||||||
Activate ("up") or deactivate ("down") network interface, if boolean
|
|
||||||
argument is passed. Otherwise, query current state if no argument is
|
|
||||||
provided. Most other methods require active interface.
|
|
||||||
|
|
||||||
.. method:: wlan.connect(ssid=None, password=None, \*, bssid=None)
|
|
||||||
|
|
||||||
Connect to the specified wireless network, using the specified password.
|
|
||||||
If *bssid* is given then the connection will be restricted to the
|
|
||||||
access-point with that MAC address (the *ssid* must also be specified
|
|
||||||
in this case).
|
|
||||||
|
|
||||||
.. method:: wlan.disconnect()
|
|
||||||
|
|
||||||
Disconnect from the currently connected wireless network.
|
|
||||||
|
|
||||||
.. method:: wlan.scan()
|
|
||||||
|
|
||||||
Scan for the available wireless networks.
|
|
||||||
|
|
||||||
Scanning is only possible on STA interface. Returns list of tuples with
|
|
||||||
the information about WiFi access points:
|
|
||||||
|
|
||||||
(ssid, bssid, channel, RSSI, authmode, hidden)
|
|
||||||
|
|
||||||
*bssid* is hardware address of an access point, in binary form, returned as
|
|
||||||
bytes object. You can use `binascii.hexlify()` to convert it to ASCII form.
|
|
||||||
|
|
||||||
There are five values for authmode:
|
|
||||||
|
|
||||||
* 0 -- open
|
|
||||||
* 1 -- WEP
|
|
||||||
* 2 -- WPA-PSK
|
|
||||||
* 3 -- WPA2-PSK
|
|
||||||
* 4 -- WPA/WPA2-PSK
|
|
||||||
|
|
||||||
and two for hidden:
|
|
||||||
|
|
||||||
* 0 -- visible
|
|
||||||
* 1 -- hidden
|
|
||||||
|
|
||||||
.. method:: wlan.status()
|
|
||||||
|
|
||||||
Return the current status of the wireless connection.
|
|
||||||
|
|
||||||
The possible statuses are defined as constants:
|
|
||||||
|
|
||||||
* ``STAT_IDLE`` -- no connection and no activity,
|
|
||||||
* ``STAT_CONNECTING`` -- connecting in progress,
|
|
||||||
* ``STAT_WRONG_PASSWORD`` -- failed due to incorrect password,
|
|
||||||
* ``STAT_NO_AP_FOUND`` -- failed because no access point replied,
|
|
||||||
* ``STAT_CONNECT_FAIL`` -- failed due to other problems,
|
|
||||||
* ``STAT_GOT_IP`` -- connection successful.
|
|
||||||
|
|
||||||
.. method:: wlan.isconnected()
|
|
||||||
|
|
||||||
In case of STA mode, returns ``True`` if connected to a WiFi access
|
|
||||||
point and has a valid IP address. In AP mode returns ``True`` when a
|
|
||||||
station is connected. Returns ``False`` otherwise.
|
|
||||||
|
|
||||||
.. method:: wlan.ifconfig([(ip, subnet, gateway, dns)])
|
|
||||||
|
|
||||||
Get/set IP-level network interface parameters: IP address, subnet mask,
|
|
||||||
gateway and DNS server. When called with no arguments, this method returns
|
|
||||||
a 4-tuple with the above information. To set the above values, pass a
|
|
||||||
4-tuple with the required information. For example::
|
|
||||||
|
|
||||||
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
|
|
||||||
|
|
||||||
.. method:: wlan.config('param')
|
|
||||||
wlan.config(param=value, ...)
|
|
||||||
|
|
||||||
Get or set general network interface parameters. These methods allow to work
|
|
||||||
with additional parameters beyond standard IP configuration (as dealt with by
|
|
||||||
`wlan.ifconfig()`). These include network-specific and hardware-specific
|
|
||||||
parameters. For setting parameters, keyword argument syntax should be used,
|
|
||||||
multiple parameters can be set at once. For querying, parameters name should
|
|
||||||
be quoted as a string, and only one parameter can be queries at time::
|
|
||||||
|
|
||||||
# Set WiFi access point name (formally known as ESSID) and WiFi channel
|
|
||||||
ap.config(essid='My AP', channel=11)
|
|
||||||
# Query params one by one
|
|
||||||
print(ap.config('essid'))
|
|
||||||
print(ap.config('channel'))
|
|
||||||
|
|
||||||
Following are commonly supported parameters (availability of a specific parameter
|
|
||||||
depends on network technology type, driver, and ``MicroPython port``).
|
|
||||||
|
|
||||||
============= ===========
|
|
||||||
Parameter Description
|
|
||||||
============= ===========
|
|
||||||
mac MAC address (bytes)
|
|
||||||
essid WiFi access point name (string)
|
|
||||||
channel WiFi channel (integer)
|
|
||||||
hidden Whether ESSID is hidden (boolean)
|
|
||||||
authmode Authentication mode supported (enumeration, see module constants)
|
|
||||||
password Access password (string)
|
|
||||||
dhcp_hostname The DHCP hostname to use
|
|
||||||
============= ===========
|
|
@ -1,9 +1,7 @@
|
|||||||
:mod:`ure` -- simple regular expressions
|
:mod:`re` -- simple regular expressions
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
.. include:: ../templates/unsupported_in_circuitpython.inc
|
.. module:: re
|
||||||
|
|
||||||
.. module:: ure
|
|
||||||
:synopsis: regular expressions
|
:synopsis: regular expressions
|
||||||
|
|
||||||
|see_cpython_module| :mod:`cpython:re`.
|
|see_cpython_module| :mod:`cpython:re`.
|
||||||
@ -77,7 +75,7 @@ Regex objects
|
|||||||
-------------
|
-------------
|
||||||
|
|
||||||
Compiled regular expression. Instances of this class are created using
|
Compiled regular expression. Instances of this class are created using
|
||||||
`ure.compile()`.
|
`re.compile()`.
|
||||||
|
|
||||||
.. method:: regex.match(string)
|
.. method:: regex.match(string)
|
||||||
regex.search(string)
|
regex.search(string)
|
@ -30,7 +30,7 @@ import sys
|
|||||||
|
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
|
||||||
SUPPORTED_PORTS = ['atmel-samd', 'esp32s2', 'litex', 'mimxrt10xx', 'nrf', 'stm']
|
SUPPORTED_PORTS = ['atmel-samd', 'cxd56', 'esp32s2', 'litex', 'mimxrt10xx', 'nrf', 'raspberrypi', 'stm']
|
||||||
|
|
||||||
def get_circuitpython_root_dir():
|
def get_circuitpython_root_dir():
|
||||||
""" The path to the root './circuitpython' directory
|
""" The path to the root './circuitpython' directory
|
||||||
@ -44,7 +44,7 @@ def get_shared_bindings():
|
|||||||
""" Get a list of modules in shared-bindings based on folder names
|
""" Get a list of modules in shared-bindings based on folder names
|
||||||
"""
|
"""
|
||||||
shared_bindings_dir = get_circuitpython_root_dir() / "shared-bindings"
|
shared_bindings_dir = get_circuitpython_root_dir() / "shared-bindings"
|
||||||
return [item.name for item in shared_bindings_dir.iterdir()] + ["ulab"]
|
return [item.name for item in shared_bindings_dir.iterdir()] + ["binascii", "errno", "json", "re", "ulab"]
|
||||||
|
|
||||||
|
|
||||||
def read_mpconfig():
|
def read_mpconfig():
|
||||||
|
@ -13,8 +13,9 @@ is limited.
|
|||||||
|
|
||||||
../ports/atmel-samd/README
|
../ports/atmel-samd/README
|
||||||
../ports/cxd56/README
|
../ports/cxd56/README
|
||||||
|
../ports/esp32s2/README
|
||||||
../ports/litex/README
|
../ports/litex/README
|
||||||
../ports/mimxrt10xx/README
|
../ports/mimxrt10xx/README
|
||||||
../ports/nrf/README
|
../ports/nrf/README
|
||||||
|
../ports/raspberrypi/README
|
||||||
../ports/stm/README
|
../ports/stm/README
|
||||||
../ports/esp32s2/README
|
|
||||||
|
@ -71,6 +71,7 @@ mp_vfs_mount_t *mp_vfs_lookup_path(const char *path, const char **path_out) {
|
|||||||
STATIC mp_vfs_mount_t *lookup_path(mp_obj_t path_in, mp_obj_t *path_out) {
|
STATIC mp_vfs_mount_t *lookup_path(mp_obj_t path_in, mp_obj_t *path_out) {
|
||||||
const char *path = mp_obj_str_get_str(path_in);
|
const char *path = mp_obj_str_get_str(path_in);
|
||||||
const char *p_out;
|
const char *p_out;
|
||||||
|
*path_out = mp_const_none;
|
||||||
mp_vfs_mount_t *vfs = mp_vfs_lookup_path(path, &p_out);
|
mp_vfs_mount_t *vfs = mp_vfs_lookup_path(path, &p_out);
|
||||||
if (vfs != MP_VFS_NONE && vfs != MP_VFS_ROOT) {
|
if (vfs != MP_VFS_NONE && vfs != MP_VFS_ROOT) {
|
||||||
*path_out = mp_obj_new_str_of_type(mp_obj_get_type(path_in),
|
*path_out = mp_obj_new_str_of_type(mp_obj_get_type(path_in),
|
||||||
@ -329,7 +330,7 @@ mp_obj_t mp_vfs_ilistdir(size_t n_args, const mp_obj_t *args) {
|
|||||||
path_in = MP_OBJ_NEW_QSTR(MP_QSTR_);
|
path_in = MP_OBJ_NEW_QSTR(MP_QSTR_);
|
||||||
}
|
}
|
||||||
|
|
||||||
mp_obj_t path_out;
|
mp_obj_t path_out = mp_const_none;
|
||||||
mp_vfs_mount_t *vfs = lookup_path(path_in, &path_out);
|
mp_vfs_mount_t *vfs = lookup_path(path_in, &path_out);
|
||||||
|
|
||||||
if (vfs == MP_VFS_ROOT) {
|
if (vfs == MP_VFS_ROOT) {
|
||||||
@ -359,7 +360,7 @@ mp_obj_t mp_vfs_listdir(size_t n_args, const mp_obj_t *args) {
|
|||||||
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_vfs_listdir_obj, 0, 1, mp_vfs_listdir);
|
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_vfs_listdir_obj, 0, 1, mp_vfs_listdir);
|
||||||
|
|
||||||
mp_obj_t mp_vfs_mkdir(mp_obj_t path_in) {
|
mp_obj_t mp_vfs_mkdir(mp_obj_t path_in) {
|
||||||
mp_obj_t path_out;
|
mp_obj_t path_out = mp_const_none;
|
||||||
mp_vfs_mount_t *vfs = lookup_path(path_in, &path_out);
|
mp_vfs_mount_t *vfs = lookup_path(path_in, &path_out);
|
||||||
if (vfs == MP_VFS_ROOT || (vfs != MP_VFS_NONE && !strcmp(mp_obj_str_get_str(path_out), "/"))) {
|
if (vfs == MP_VFS_ROOT || (vfs != MP_VFS_NONE && !strcmp(mp_obj_str_get_str(path_out), "/"))) {
|
||||||
mp_raise_OSError(MP_EEXIST);
|
mp_raise_OSError(MP_EEXIST);
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 902c16f49197a8baf5e71ec924a812a86e733a74
|
Subproject commit 5e925cea7a55273e375a6129761cb29b4e750d4f
|
@ -1 +1 @@
|
|||||||
Subproject commit cfcffe94ce62f5ef1fb5aef4641924d64dc4b1c0
|
Subproject commit 045674745afa59028fbeed6dac5cb5a9c4a6033e
|
105
locale/ID.po
105
locale/ID.po
@ -6,7 +6,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-01-03 05:29+0000\n"
|
"PO-Revision-Date: 2021-01-15 19:49+0000\n"
|
||||||
"Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n"
|
"Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"Language: ID\n"
|
"Language: ID\n"
|
||||||
@ -14,7 +14,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Weblate 4.4.1-dev\n"
|
"X-Generator: Weblate 4.5-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -48,6 +48,10 @@ msgstr " File \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " File \"%q\", baris %d"
|
msgstr " File \"%q\", baris %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr "output:\n"
|
msgstr "output:\n"
|
||||||
@ -869,6 +873,10 @@ msgstr "Channel EXTINT sedang digunakan"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Error pada regex"
|
msgstr "Error pada regex"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1261,10 +1269,18 @@ msgstr "security_mode tidak valid"
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr "Suara tidak valid"
|
msgstr "Suara tidak valid"
|
||||||
@ -1281,6 +1297,10 @@ msgstr "File wave tidak valid"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "Panjang kata/bit tidak valid"
|
msgstr "Panjang kata/bit tidak valid"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "Panjang kunci harus 16, 24, atau 32 byte"
|
msgstr "Panjang kunci harus 16, 24, atau 32 byte"
|
||||||
@ -1569,7 +1589,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2054,38 +2074,41 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown gatt error: 0x%04x"
|
msgid "Unknown gatt error: 0x%04x"
|
||||||
msgstr ""
|
msgstr "Kesalahan gatt tidak dikenal: 0x%04x"
|
||||||
|
|
||||||
#: supervisor/shared/safe_mode.c
|
#: supervisor/shared/safe_mode.c
|
||||||
msgid "Unknown reason."
|
msgid "Unknown reason."
|
||||||
msgstr ""
|
msgstr "Alasan yang tidak diketahui."
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown security error: 0x%04x"
|
msgid "Unknown security error: 0x%04x"
|
||||||
msgstr ""
|
msgstr "Kesalahan keamanan tidak dikenal: 0x%04x"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unknown soft device error: %04x"
|
msgid "Unknown soft device error: %04x"
|
||||||
msgstr ""
|
msgstr "Kesalahan perangkat lunak tidak dikenal: %04x"
|
||||||
|
|
||||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unmatched number of items on RHS (expected %d, got %d)."
|
msgid "Unmatched number of items on RHS (expected %d, got %d)."
|
||||||
msgstr ""
|
msgstr "Jumlah item pada RHS tidak cocok (diharapkan %d, didapatkan %d)."
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
msgid ""
|
msgid ""
|
||||||
"Unspecified issue. Can be that the pairing prompt on the other device was "
|
"Unspecified issue. Can be that the pairing prompt on the other device was "
|
||||||
"declined or ignored."
|
"declined or ignored."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Masalah yang tidak ditentukan. Bisa jadi permintaan pemasangan pada "
|
||||||
|
"perangkat lain ditolak atau diabaikan."
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/I2C.c
|
#: ports/atmel-samd/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/I2C.c
|
||||||
#: ports/esp32s2/common-hal/busio/UART.c ports/stm/common-hal/busio/I2C.c
|
#: ports/esp32s2/common-hal/busio/UART.c ports/stm/common-hal/busio/I2C.c
|
||||||
@ -2099,15 +2122,15 @@ msgstr "Baudrate tidak didukung"
|
|||||||
|
|
||||||
#: shared-module/audiocore/WaveFile.c
|
#: shared-module/audiocore/WaveFile.c
|
||||||
msgid "Unsupported format"
|
msgid "Unsupported format"
|
||||||
msgstr ""
|
msgstr "Format tidak didukung"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "Unsupported operation"
|
msgid "Unsupported operation"
|
||||||
msgstr ""
|
msgstr "Operasi yang tidak didukung"
|
||||||
|
|
||||||
#: shared-bindings/digitalio/DigitalInOut.c
|
#: shared-bindings/digitalio/DigitalInOut.c
|
||||||
msgid "Unsupported pull value."
|
msgid "Unsupported pull value."
|
||||||
msgstr ""
|
msgstr "Nilai tarikan yang tidak didukung."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/dualbank/__init__.c
|
#: ports/esp32s2/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
@ -2116,12 +2139,12 @@ msgstr ""
|
|||||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||||
#: ports/nrf/common-hal/_bleio/Descriptor.c
|
#: ports/nrf/common-hal/_bleio/Descriptor.c
|
||||||
msgid "Value length != required fixed length"
|
msgid "Value length != required fixed length"
|
||||||
msgstr ""
|
msgstr "Panjang nilai != Panjang tetap yang dibutuhkan"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||||
#: ports/nrf/common-hal/_bleio/Descriptor.c
|
#: ports/nrf/common-hal/_bleio/Descriptor.c
|
||||||
msgid "Value length > max_length"
|
msgid "Value length > max_length"
|
||||||
msgstr ""
|
msgstr "Panjang nilai > max_length"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Version was invalid"
|
msgid "Version was invalid"
|
||||||
@ -2129,11 +2152,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: py/emitnative.c
|
#: py/emitnative.c
|
||||||
msgid "Viper functions don't currently support more than 4 arguments"
|
msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
msgstr ""
|
msgstr "Fungsi Viper saat ini tidak mendukung lebih dari 4 argumen"
|
||||||
|
|
||||||
#: ports/stm/common-hal/microcontroller/Processor.c
|
#: ports/stm/common-hal/microcontroller/Processor.c
|
||||||
msgid "Voltage read timed out"
|
msgid "Voltage read timed out"
|
||||||
msgstr ""
|
msgstr "Tegangan baca habis waktu"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid "WARNING: Your code filename has two extensions\n"
|
msgid "WARNING: Your code filename has two extensions\n"
|
||||||
@ -2185,11 +2208,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||||
msgid "Writes not supported on Characteristic"
|
msgid "Writes not supported on Characteristic"
|
||||||
msgstr ""
|
msgstr "Menulis tidak didukung pada Karakteristik"
|
||||||
|
|
||||||
#: supervisor/shared/safe_mode.c
|
#: supervisor/shared/safe_mode.c
|
||||||
msgid "You are in safe mode: something unanticipated happened.\n"
|
msgid "You are in safe mode: something unanticipated happened.\n"
|
||||||
msgstr ""
|
msgstr "Anda berada dalam mode aman: sesuatu yang tidak terduga terjadi.\n"
|
||||||
|
|
||||||
#: supervisor/shared/safe_mode.c
|
#: supervisor/shared/safe_mode.c
|
||||||
msgid "You requested starting safe mode by "
|
msgid "You requested starting safe mode by "
|
||||||
@ -2197,7 +2220,7 @@ msgstr "Anda mengajukan untuk memulai mode aman pada (safe mode) pada "
|
|||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "__init__() should return None"
|
msgid "__init__() should return None"
|
||||||
msgstr ""
|
msgstr "__init __() harus mengembalikan None"
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "__init__() should return None, not '%q'"
|
msgid "__init__() should return None, not '%q'"
|
||||||
@ -2205,7 +2228,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: py/objobject.c
|
#: py/objobject.c
|
||||||
msgid "__new__ arg must be a user-type"
|
msgid "__new__ arg must be a user-type"
|
||||||
msgstr ""
|
msgstr "__new__ arg harus berupa user-type"
|
||||||
|
|
||||||
#: extmod/modubinascii.c extmod/moduhashlib.c py/objarray.c
|
#: extmod/modubinascii.c extmod/moduhashlib.c py/objarray.c
|
||||||
msgid "a bytes-like object is required"
|
msgid "a bytes-like object is required"
|
||||||
@ -2222,19 +2245,19 @@ msgstr "alamat %08x tidak selaras dengan %d bytes"
|
|||||||
|
|
||||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||||
msgid "address out of bounds"
|
msgid "address out of bounds"
|
||||||
msgstr ""
|
msgstr "alamat di luar batas"
|
||||||
|
|
||||||
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
#: shared-bindings/i2cperipheral/I2CPeripheral.c
|
||||||
msgid "addresses is empty"
|
msgid "addresses is empty"
|
||||||
msgstr ""
|
msgstr "alamatnya kosong"
|
||||||
|
|
||||||
#: py/modbuiltins.c
|
#: py/modbuiltins.c
|
||||||
msgid "arg is an empty sequence"
|
msgid "arg is an empty sequence"
|
||||||
msgstr ""
|
msgstr "arg berisi urutan kosong"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "argsort argument must be an ndarray"
|
msgid "argsort argument must be an ndarray"
|
||||||
msgstr ""
|
msgstr "Argumen argsort harus berupa ndarray"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "argsort is not implemented for flattened arrays"
|
msgid "argsort is not implemented for flattened arrays"
|
||||||
@ -2242,7 +2265,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: py/runtime.c
|
#: py/runtime.c
|
||||||
msgid "argument has wrong type"
|
msgid "argument has wrong type"
|
||||||
msgstr ""
|
msgstr "argumen memiliki tipe yang salah"
|
||||||
|
|
||||||
#: extmod/ulab/code/linalg/linalg.c
|
#: extmod/ulab/code/linalg/linalg.c
|
||||||
msgid "argument must be ndarray"
|
msgid "argument must be ndarray"
|
||||||
@ -2255,11 +2278,11 @@ msgstr "argumen num/types tidak cocok"
|
|||||||
|
|
||||||
#: py/runtime.c
|
#: py/runtime.c
|
||||||
msgid "argument should be a '%q' not a '%q'"
|
msgid "argument should be a '%q' not a '%q'"
|
||||||
msgstr ""
|
msgstr "argumen harus berupa '%q' bukan '%q'"
|
||||||
|
|
||||||
#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/linalg/linalg.c extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "arguments must be ndarrays"
|
msgid "arguments must be ndarrays"
|
||||||
msgstr ""
|
msgstr "argumen harus berupa ndarrays"
|
||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "array and index length must be equal"
|
msgid "array and index length must be equal"
|
||||||
@ -2268,7 +2291,7 @@ msgstr ""
|
|||||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||||
#: shared-bindings/nvm/ByteArray.c
|
#: shared-bindings/nvm/ByteArray.c
|
||||||
msgid "array/bytes required on right side"
|
msgid "array/bytes required on right side"
|
||||||
msgstr ""
|
msgstr "diperlukan array/byte di sisi kanan"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "attempt to get (arg)min/(arg)max of empty sequence"
|
msgid "attempt to get (arg)min/(arg)max of empty sequence"
|
||||||
@ -2276,11 +2299,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "attempt to get argmin/argmax of an empty sequence"
|
msgid "attempt to get argmin/argmax of an empty sequence"
|
||||||
msgstr ""
|
msgstr "berusaha mendapatkan argmin/argmax dari urutan kosong"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "attributes not supported yet"
|
msgid "attributes not supported yet"
|
||||||
msgstr ""
|
msgstr "atribut belum didukung"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "axis is out of bounds"
|
msgid "axis is out of bounds"
|
||||||
@ -2300,7 +2323,7 @@ msgstr "mode compile buruk"
|
|||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "bad conversion specifier"
|
msgid "bad conversion specifier"
|
||||||
msgstr ""
|
msgstr "specifier salah konversi"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "bad format string"
|
msgid "bad format string"
|
||||||
@ -2326,10 +2349,18 @@ msgstr ""
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
@ -3332,6 +3363,10 @@ msgstr ""
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3388,6 +3423,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
@ -3944,6 +3983,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -43,6 +43,10 @@ msgstr ""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -54,7 +58,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: shared-bindings/rgbmatrix/RGBMatrix.c
|
#: shared-bindings/rgbmatrix/RGBMatrix.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d address pins and %d rgb pins indicate a height of %d, not %d"
|
msgid ""
|
||||||
|
"%d address pins, %d rgb pins and %d tiles indicate a height of %d, not %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/sdioio/SDCard.c
|
#: ports/atmel-samd/common-hal/sdioio/SDCard.c
|
||||||
@ -512,7 +517,6 @@ msgstr ""
|
|||||||
msgid "Buffer must be a multiple of 512 bytes"
|
msgid "Buffer must be a multiple of 512 bytes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/adafruit_bus_device/I2CDevice.c
|
|
||||||
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
|
||||||
msgid "Buffer must be at least length 1"
|
msgid "Buffer must be at least length 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -527,6 +531,7 @@ msgid "Buffer too short by %d bytes"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/displayio/ParallelBus.c
|
#: ports/atmel-samd/common-hal/displayio/ParallelBus.c
|
||||||
|
#: ports/esp32s2/common-hal/displayio/ParallelBus.c
|
||||||
#: ports/nrf/common-hal/displayio/ParallelBus.c
|
#: ports/nrf/common-hal/displayio/ParallelBus.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Bus pin %d is already in use"
|
msgid "Bus pin %d is already in use"
|
||||||
@ -796,6 +801,10 @@ msgstr ""
|
|||||||
msgid "Data 0 pin must be byte aligned"
|
msgid "Data 0 pin must be byte aligned"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/displayio/ParallelBus.c
|
||||||
|
msgid "Data 0 pin must be byte aligned."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/audiocore/WaveFile.c
|
#: shared-module/audiocore/WaveFile.c
|
||||||
msgid "Data chunk must follow fmt chunk"
|
msgid "Data chunk must follow fmt chunk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -850,6 +859,10 @@ msgstr ""
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1240,10 +1253,18 @@ msgstr ""
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1260,6 +1281,10 @@ msgstr ""
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1542,7 +1567,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1564,7 +1589,6 @@ msgid ""
|
|||||||
"PWM frequency not writable when variable_frequency is False on construction."
|
"PWM frequency not writable when variable_frequency is False on construction."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/displayio/ParallelBus.c
|
|
||||||
#: ports/mimxrt10xx/common-hal/displayio/ParallelBus.c
|
#: ports/mimxrt10xx/common-hal/displayio/ParallelBus.c
|
||||||
#: ports/stm/common-hal/displayio/ParallelBus.c
|
#: ports/stm/common-hal/displayio/ParallelBus.c
|
||||||
msgid "ParallelBus not yet supported"
|
msgid "ParallelBus not yet supported"
|
||||||
@ -3300,6 +3324,10 @@ msgstr ""
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3694,6 +3722,10 @@ msgstr ""
|
|||||||
msgid "threshold must be in the range 0-65536"
|
msgid "threshold must be in the range 0-65536"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/rgbmatrix/RGBMatrix.c
|
||||||
|
msgid "tile must be greater than zero"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/time/__init__.c
|
#: shared-bindings/time/__init__.c
|
||||||
msgid "time.struct_time() takes a 9-sequence"
|
msgid "time.struct_time() takes a 9-sequence"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3914,6 +3946,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
45
locale/cs.po
45
locale/cs.po
@ -46,6 +46,10 @@ msgstr " Soubor \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Soubor \"%q\", řádek %d"
|
msgstr " Soubor \"%q\", řádek %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " výstup:\n"
|
msgstr " výstup:\n"
|
||||||
@ -853,6 +857,10 @@ msgstr ""
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1243,10 +1251,18 @@ msgstr ""
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1263,6 +1279,10 @@ msgstr ""
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1545,7 +1565,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2016,7 +2036,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2281,10 +2302,18 @@ msgstr ""
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3286,6 +3315,10 @@ msgstr ""
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3342,6 +3375,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3896,6 +3933,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -47,6 +47,10 @@ msgstr " Datei \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Datei \"%q\", Zeile %d"
|
msgstr " Datei \"%q\", Zeile %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " Ausgabe:\n"
|
msgstr " Ausgabe:\n"
|
||||||
@ -865,6 +869,10 @@ msgstr "EXTINT Kanal ist schon in Benutzung"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Fehler in regex"
|
msgstr "Fehler in regex"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1260,10 +1268,18 @@ msgstr "Ungültiger security_mode"
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr "Ungültige Stimme"
|
msgstr "Ungültige Stimme"
|
||||||
@ -1280,6 +1296,10 @@ msgstr "Ungültige wave Datei"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "Ungültige Wort- / Bitlänge"
|
msgstr "Ungültige Wort- / Bitlänge"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "Der Schlüssel muss 16, 24 oder 32 Byte lang sein"
|
msgstr "Der Schlüssel muss 16, 24 oder 32 Byte lang sein"
|
||||||
@ -1570,7 +1590,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2058,7 +2078,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2338,10 +2359,18 @@ msgstr "Es müssen 8 oder 16 bits_per_sample sein"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "Zweig ist außerhalb der Reichweite"
|
msgstr "Zweig ist außerhalb der Reichweite"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "Puffer muss ein bytes-artiges Objekt sein"
|
msgstr "Puffer muss ein bytes-artiges Objekt sein"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr "Die Puffergröße muss zum Format passen"
|
msgstr "Die Puffergröße muss zum Format passen"
|
||||||
@ -3363,6 +3392,10 @@ msgstr "Nicht genügend Argumente für den Formatierungs-String"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr "Die Anzahl der Punkte muss mindestens 2 betragen"
|
msgstr "Die Anzahl der Punkte muss mindestens 2 betragen"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3419,6 +3452,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr "offset außerhalb der Grenzen"
|
msgstr "offset außerhalb der Grenzen"
|
||||||
@ -3983,6 +4020,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr "Fenster muss <= Intervall sein"
|
msgstr "Fenster muss <= Intervall sein"
|
||||||
|
45
locale/el.po
45
locale/el.po
@ -43,6 +43,10 @@ msgstr ""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -850,6 +854,10 @@ msgstr ""
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1240,10 +1248,18 @@ msgstr ""
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1260,6 +1276,10 @@ msgstr ""
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1542,7 +1562,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2013,7 +2033,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2278,10 +2299,18 @@ msgstr ""
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3283,6 +3312,10 @@ msgstr ""
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3339,6 +3372,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3893,6 +3930,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
50
locale/es.po
50
locale/es.po
@ -48,6 +48,10 @@ msgstr " Archivo \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Archivo \"%q\", línea %d"
|
msgstr " Archivo \"%q\", línea %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " salida:\n"
|
msgstr " salida:\n"
|
||||||
@ -868,6 +872,10 @@ msgstr "El canal EXTINT ya está siendo utilizado"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Error en regex"
|
msgstr "Error en regex"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1261,10 +1269,18 @@ msgstr "'security_mode' no válido"
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr "Voz inválida"
|
msgstr "Voz inválida"
|
||||||
@ -1281,6 +1297,10 @@ msgstr "Archivo wave inválido"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "Tamaño no válido de palabra/bit"
|
msgstr "Tamaño no válido de palabra/bit"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "La llave debe tener 16, 24 o 32 bytes de longitud"
|
msgstr "La llave debe tener 16, 24 o 32 bytes de longitud"
|
||||||
@ -1569,7 +1589,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr "Se acabaron los enchufes"
|
msgstr "Se acabaron los enchufes"
|
||||||
|
|
||||||
@ -2063,8 +2083,9 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr "Error no manejado de ESP TLS %d %d %x %d"
|
msgstr "Error no manejado de ESP TLS %d %d %x %d"
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
msgstr "Fallo desconocido"
|
msgid "Unknown failure %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2339,10 +2360,18 @@ msgstr "bits_per_sample debe ser 8 ó 16"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "la rama no está dentro del rango"
|
msgstr "la rama no está dentro del rango"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "buffer debe de ser un objeto bytes-like"
|
msgstr "buffer debe de ser un objeto bytes-like"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr "el tamaño del buffer debe de coincidir con el formato"
|
msgstr "el tamaño del buffer debe de coincidir con el formato"
|
||||||
@ -3357,6 +3386,10 @@ msgstr "no suficientes argumentos para format string"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr "el número de puntos debe ser al menos 2"
|
msgstr "el número de puntos debe ser al menos 2"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr "objeto '%q' no es tupla o lista"
|
msgstr "objeto '%q' no es tupla o lista"
|
||||||
@ -3413,6 +3446,10 @@ msgstr "offset es demasiado grande"
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr "offset fuera de límites"
|
msgstr "offset fuera de límites"
|
||||||
@ -3970,6 +4007,10 @@ msgstr "el tiempo de espera del perro guardián debe ser mayor a 0"
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr "el ancho debe ser mayor que cero"
|
msgstr "el ancho debe ser mayor que cero"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr "la ventana debe ser <= intervalo"
|
msgstr "la ventana debe ser <= intervalo"
|
||||||
@ -4034,6 +4075,9 @@ msgstr "zi debe ser de tipo flotante"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi debe ser una forma (n_section,2)"
|
msgstr "zi debe ser una forma (n_section,2)"
|
||||||
|
|
||||||
|
#~ msgid "Unknown failure"
|
||||||
|
#~ msgstr "Fallo desconocido"
|
||||||
|
|
||||||
#~ msgid "input argument must be an integer or a 2-tuple"
|
#~ msgid "input argument must be an integer or a 2-tuple"
|
||||||
#~ msgstr "el argumento de entrada debe ser un entero o una tupla de par"
|
#~ msgstr "el argumento de entrada debe ser un entero o una tupla de par"
|
||||||
|
|
||||||
|
@ -42,6 +42,10 @@ msgstr " File \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " File \"%q\", line %d"
|
msgstr " File \"%q\", line %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " output:\n"
|
msgstr " output:\n"
|
||||||
@ -861,6 +865,10 @@ msgstr "Ginagamit na ang EXTINT channel"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "May pagkakamali sa REGEX"
|
msgstr "May pagkakamali sa REGEX"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1255,10 +1263,18 @@ msgstr ""
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1275,6 +1291,10 @@ msgstr "May hindi tama sa wave file"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1560,7 +1580,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2034,7 +2054,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2308,10 +2329,18 @@ msgstr "bits_per_sample ay dapat 8 o 16"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "branch wala sa range"
|
msgstr "branch wala sa range"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "buffer ay dapat bytes-like object"
|
msgstr "buffer ay dapat bytes-like object"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
@ -3330,6 +3359,10 @@ msgstr "kulang sa arguments para sa format string"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3386,6 +3419,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
@ -3946,6 +3983,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
56
locale/fr.po
56
locale/fr.po
@ -8,14 +8,14 @@ msgstr ""
|
|||||||
"Project-Id-Version: 0.1\n"
|
"Project-Id-Version: 0.1\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-01-13 16:07+0000\n"
|
"PO-Revision-Date: 2021-01-17 12:55+0000\n"
|
||||||
"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n"
|
"Last-Translator: Hugo Dahl <hugo@code-jedi.com>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.4.1-dev\n"
|
"X-Generator: Weblate 4.5-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -52,6 +52,10 @@ msgstr " Fichier \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Fichier \"%q\", ligne %d"
|
msgstr " Fichier \"%q\", ligne %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " sortie :\n"
|
msgstr " sortie :\n"
|
||||||
@ -646,7 +650,7 @@ msgstr ""
|
|||||||
#: shared-bindings/digitalio/DigitalInOut.c
|
#: shared-bindings/digitalio/DigitalInOut.c
|
||||||
msgid "Cannot set value when direction is input."
|
msgid "Cannot set value when direction is input."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Impossible d'affecter une valeur quand la direction est entrentre ('input')."
|
"Impossible d'affecter une valeur quand la direction est entrante ('input')."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/busio/UART.c
|
#: ports/esp32s2/common-hal/busio/UART.c
|
||||||
#: ports/mimxrt10xx/common-hal/busio/UART.c
|
#: ports/mimxrt10xx/common-hal/busio/UART.c
|
||||||
@ -882,6 +886,10 @@ msgstr "Canal EXTINT déjà utilisé"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Erreur dans l'expression régulière"
|
msgstr "Erreur dans l'expression régulière"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1277,10 +1285,18 @@ msgstr "'security_mode' invalide"
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr "Taille invalide"
|
msgstr "Taille invalide"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr "État invalide"
|
msgstr "État invalide"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr "Voix invalide"
|
msgstr "Voix invalide"
|
||||||
@ -1297,6 +1313,10 @@ msgstr "Fichier WAVE invalide"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "Longueur de mot / bit invalide"
|
msgstr "Longueur de mot / bit invalide"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "La clé doit comporter 16, 24 ou 32 octets"
|
msgstr "La clé doit comporter 16, 24 ou 32 octets"
|
||||||
@ -1585,7 +1605,7 @@ msgstr "Timeout de l'opération"
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr "Hors de mémoire"
|
msgstr "Hors de mémoire"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr "Plus de sockets"
|
msgstr "Plus de sockets"
|
||||||
|
|
||||||
@ -2085,8 +2105,9 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr "Erreur ESP TLS non gérée %d %d %x %d"
|
msgstr "Erreur ESP TLS non gérée %d %d %x %d"
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
msgstr "Echec inconnu"
|
msgid "Unknown failure %d"
|
||||||
|
msgstr "Échec inconnu %d"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2363,10 +2384,18 @@ msgstr "'bits_per_sample' doivent être 8 ou 16"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "branche hors-bornes"
|
msgstr "branche hors-bornes"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr "tampon est plus petit que la taille demandée"
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "le tampon doit être un objet bytes-like"
|
msgstr "le tampon doit être un objet bytes-like"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr "taille du tampon doit être un multiple de la taille de l'élement"
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr "la taille du tampon doit correspondre au format"
|
msgstr "la taille du tampon doit correspondre au format"
|
||||||
@ -3390,6 +3419,10 @@ msgstr "pas assez d'arguments pour la chaîne de format"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr "le nombre de points doit être d'au moins 2"
|
msgstr "le nombre de points doit être d'au moins 2"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr "l'objet '%q' n'est pas un tuple ou une list"
|
msgstr "l'objet '%q' n'est pas un tuple ou une list"
|
||||||
@ -3446,6 +3479,10 @@ msgstr "offset est trop large"
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr "offset doit être >= 0"
|
msgstr "offset doit être >= 0"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr "offset doit être non-négatif, et au plus la taille du tampon"
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr "décalage hors limites"
|
msgstr "décalage hors limites"
|
||||||
@ -4006,6 +4043,10 @@ msgstr "watchdog timeout doit être supérieur à 0"
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr "width doit être plus grand que zero"
|
msgstr "width doit être plus grand que zero"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr "la fenêtre (window) doit être <= intervalle (interval)"
|
msgstr "la fenêtre (window) doit être <= intervalle (interval)"
|
||||||
@ -4070,6 +4111,9 @@ msgstr "zi doit être de type float"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi doit être de forme (n_section, 2)"
|
msgstr "zi doit être de forme (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Unknown failure"
|
||||||
|
#~ msgstr "Echec inconnu"
|
||||||
|
|
||||||
#~ msgid "Only one alarm.touch alarm can be set."
|
#~ msgid "Only one alarm.touch alarm can be set."
|
||||||
#~ msgstr "Seulement une alarme alarm.touch peut être réglée."
|
#~ msgstr "Seulement une alarme alarm.touch peut être réglée."
|
||||||
|
|
||||||
|
45
locale/hi.po
45
locale/hi.po
@ -43,6 +43,10 @@ msgstr ""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -850,6 +854,10 @@ msgstr ""
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1240,10 +1248,18 @@ msgstr ""
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1260,6 +1276,10 @@ msgstr ""
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1542,7 +1562,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2013,7 +2033,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2278,10 +2299,18 @@ msgstr ""
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3283,6 +3312,10 @@ msgstr ""
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3339,6 +3372,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3893,6 +3930,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -42,6 +42,10 @@ msgstr " File \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " File \"%q\", riga %d"
|
msgstr " File \"%q\", riga %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " output:\n"
|
msgstr " output:\n"
|
||||||
@ -861,6 +865,10 @@ msgstr "Canale EXTINT già in uso"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Errore nella regex"
|
msgstr "Errore nella regex"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1257,10 +1265,18 @@ msgstr ""
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1278,6 +1294,10 @@ msgstr "File wave non valido"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1565,7 +1585,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2046,7 +2066,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2314,10 +2335,18 @@ msgstr "i bit devono essere 7, 8 o 9"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "argomento di chr() non è in range(256)"
|
msgstr "argomento di chr() non è in range(256)"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
@ -3336,6 +3365,10 @@ msgstr "argomenti non sufficienti per la stringa di formattazione"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3392,6 +3425,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
@ -3954,6 +3991,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
45
locale/ja.po
45
locale/ja.po
@ -48,6 +48,10 @@ msgstr " ファイル \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " ファイル \"%q\", 行 %d"
|
msgstr " ファイル \"%q\", 行 %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " 出力:\n"
|
msgstr " 出力:\n"
|
||||||
@ -861,6 +865,10 @@ msgstr "EXTINTチャネルはすでに使用されています"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "正規表現にエラーがあります"
|
msgstr "正規表現にエラーがあります"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1253,10 +1261,18 @@ msgstr "不正なsecurity_mode"
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr "不正なボイス"
|
msgstr "不正なボイス"
|
||||||
@ -1273,6 +1289,10 @@ msgstr "不正なwaveファイル"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "不正なワード/ビット長"
|
msgstr "不正なワード/ビット長"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "Keyの長さは、16, 24, 32バイトのいずれかでなければなりません"
|
msgstr "Keyの長さは、16, 24, 32バイトのいずれかでなければなりません"
|
||||||
@ -1557,7 +1577,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2036,7 +2056,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2301,10 +2322,18 @@ msgstr "bits_per_sampleは8または16でなければなりません"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "バッファはbytes-likeオブジェクトでなければなりません"
|
msgstr "バッファはbytes-likeオブジェクトでなければなりません"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3311,6 +3340,10 @@ msgstr "書式化文字列への引数が足りません"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr "オブジェクト'%q'がタプルやリストでありません"
|
msgstr "オブジェクト'%q'がタプルやリストでありません"
|
||||||
@ -3367,6 +3400,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3924,6 +3961,10 @@ msgstr "watchdogのtimeoutは0以上でなければなりません"
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr "windowはinterval以下でなければなりません"
|
msgstr "windowはinterval以下でなければなりません"
|
||||||
|
45
locale/ko.po
45
locale/ko.po
@ -44,6 +44,10 @@ msgstr " 파일 \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " 파일 \"%q\", 라인 %d"
|
msgstr " 파일 \"%q\", 라인 %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " 산출:\n"
|
msgstr " 산출:\n"
|
||||||
@ -853,6 +857,10 @@ msgstr ""
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Regex에 오류가 있습니다."
|
msgstr "Regex에 오류가 있습니다."
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1243,10 +1251,18 @@ msgstr ""
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1263,6 +1279,10 @@ msgstr ""
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -1545,7 +1565,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -2017,7 +2037,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2282,10 +2303,18 @@ msgstr "bits_per_sample은 8 또는 16이어야합니다."
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3287,6 +3316,10 @@ msgstr ""
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3343,6 +3376,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3897,6 +3934,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
50
locale/nl.po
50
locale/nl.po
@ -46,6 +46,10 @@ msgstr " Bestand"
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Bestand \"%q\", regel %d"
|
msgstr " Bestand \"%q\", regel %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " uitvoer:\n"
|
msgstr " uitvoer:\n"
|
||||||
@ -861,6 +865,10 @@ msgstr "EXTINT kanaal al in gebruik"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Fout in regex"
|
msgstr "Fout in regex"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1254,10 +1262,18 @@ msgstr "Ongeldige security_mode"
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr "Ongeldige stem"
|
msgstr "Ongeldige stem"
|
||||||
@ -1274,6 +1290,10 @@ msgstr "Ongeldig wave bestand"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "Ongeldig woord/bit lengte"
|
msgstr "Ongeldig woord/bit lengte"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "Sleutel moet 16, 24, of 32 bytes lang zijn"
|
msgstr "Sleutel moet 16, 24, of 32 bytes lang zijn"
|
||||||
@ -1562,7 +1582,7 @@ msgstr ""
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr "Geen sockets meer beschikbaar"
|
msgstr "Geen sockets meer beschikbaar"
|
||||||
|
|
||||||
@ -2055,8 +2075,9 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr "Niet behandelde ESP TLS fout %d %d %x %d"
|
msgstr "Niet behandelde ESP TLS fout %d %d %x %d"
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
msgstr "Onbekende fout"
|
msgid "Unknown failure %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2331,10 +2352,18 @@ msgstr "bits_per_sample moet 8 of 16 zijn"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "pad (branch) niet binnen bereik"
|
msgstr "pad (branch) niet binnen bereik"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "buffer moet een byte-achtig object zijn"
|
msgstr "buffer moet een byte-achtig object zijn"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr "grootte van de buffer moet overeenkomen met het formaat"
|
msgstr "grootte van de buffer moet overeenkomen met het formaat"
|
||||||
@ -3344,6 +3373,10 @@ msgstr "niet genoeg argumenten om string te formatteren"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr "aantal punten moet minimaal 2 zijn"
|
msgstr "aantal punten moet minimaal 2 zijn"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr "object '%q' is geen tuple of lijst"
|
msgstr "object '%q' is geen tuple of lijst"
|
||||||
@ -3400,6 +3433,10 @@ msgstr "compensatie is te groot"
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr "compensatie moet groter of gelijk 0 zijn"
|
msgstr "compensatie moet groter of gelijk 0 zijn"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr "offset buiten bereik"
|
msgstr "offset buiten bereik"
|
||||||
@ -3957,6 +3994,10 @@ msgstr "watchdog time-out moet groter zijn dan 0"
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr "breedte moet groter dan nul zijn"
|
msgstr "breedte moet groter dan nul zijn"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr "window moet <= interval zijn"
|
msgstr "window moet <= interval zijn"
|
||||||
@ -4021,6 +4062,9 @@ msgstr "zi moet van type float zijn"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi moet vorm (n_section, 2) hebben"
|
msgstr "zi moet vorm (n_section, 2) hebben"
|
||||||
|
|
||||||
|
#~ msgid "Unknown failure"
|
||||||
|
#~ msgstr "Onbekende fout"
|
||||||
|
|
||||||
#~ msgid "input argument must be an integer or a 2-tuple"
|
#~ msgid "input argument must be an integer or a 2-tuple"
|
||||||
#~ msgstr "invoerargument moet een integer of 2-tuple zijn"
|
#~ msgstr "invoerargument moet een integer of 2-tuple zijn"
|
||||||
|
|
||||||
|
59
locale/pl.po
59
locale/pl.po
@ -7,7 +7,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2020-12-02 20:29+0000\n"
|
"PO-Revision-Date: 2021-01-20 02:40+0000\n"
|
||||||
"Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n"
|
"Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n"
|
||||||
"Language-Team: pl\n"
|
"Language-Team: pl\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||||
"|| n%100>=20) ? 1 : 2;\n"
|
"|| n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Weblate 4.4-dev\n"
|
"X-Generator: Weblate 4.5-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -48,6 +48,10 @@ msgstr " Plik \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Plik \"%q\", linia %d"
|
msgstr " Plik \"%q\", linia %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " wyjście:\n"
|
msgstr " wyjście:\n"
|
||||||
@ -770,7 +774,7 @@ msgstr "Nie można rozpocząć przerwania, RX jest zajęty"
|
|||||||
|
|
||||||
#: shared-module/audiomp3/MP3Decoder.c
|
#: shared-module/audiomp3/MP3Decoder.c
|
||||||
msgid "Couldn't allocate decoder"
|
msgid "Couldn't allocate decoder"
|
||||||
msgstr ""
|
msgstr "Nie udało się przydzielić dekodera"
|
||||||
|
|
||||||
#: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c
|
#: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c
|
||||||
#: shared-module/audiomp3/MP3Decoder.c
|
#: shared-module/audiomp3/MP3Decoder.c
|
||||||
@ -861,6 +865,10 @@ msgstr "Kanał EXTINT w użyciu"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Błąd w regex"
|
msgstr "Błąd w regex"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1070,7 +1078,7 @@ msgstr "Niewłaściwa wielkość bufora"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
|
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
|
||||||
msgid "Initialization failed due to lack of memory"
|
msgid "Initialization failed due to lack of memory"
|
||||||
msgstr ""
|
msgstr "Inicjalizacja nie powiodła się z powodu braku pamięci"
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||||
msgid "Input taking too long"
|
msgid "Input taking too long"
|
||||||
@ -1251,10 +1259,18 @@ msgstr "Nieprawidłowy security_mode"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
|
msgstr "Nieprawidłowy rozmiar"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
|
msgstr "Nieprawidłowy stan"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
@ -1273,6 +1289,10 @@ msgstr "Zły plik wave"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "Niepoprawna długość słowa/bitu"
|
msgstr "Niepoprawna długość słowa/bitu"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "Klucz musi mieć długość 16, 24 lub 32 bajtów"
|
msgstr "Klucz musi mieć długość 16, 24 lub 32 bajtów"
|
||||||
@ -1554,9 +1574,9 @@ msgstr ""
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr "Brak pamięci"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1707,7 +1727,7 @@ msgstr "Obiekt tylko do odczytu"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Received response was invalid"
|
msgid "Received response was invalid"
|
||||||
msgstr ""
|
msgstr "Otrzymana odpowiedź była nieprawidłowa"
|
||||||
|
|
||||||
#: shared-bindings/displayio/EPaperDisplay.c
|
#: shared-bindings/displayio/EPaperDisplay.c
|
||||||
msgid "Refresh too soon"
|
msgid "Refresh too soon"
|
||||||
@ -1723,7 +1743,7 @@ msgstr "Żądany tryb AES nie jest obsługiwany"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Requested resource not found"
|
msgid "Requested resource not found"
|
||||||
msgstr ""
|
msgstr "Nie znaleziono żądanego zasobu"
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
msgid "Right channel unsupported"
|
msgid "Right channel unsupported"
|
||||||
@ -2027,7 +2047,8 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
|
msgid "Unknown failure %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
@ -2298,10 +2319,18 @@ msgstr "bits_per_sample musi być 8 lub 16"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "skok poza zakres"
|
msgstr "skok poza zakres"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "bufor mysi być typu bytes"
|
msgstr "bufor mysi być typu bytes"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr "wielkość bufora musi pasować do formatu"
|
msgstr "wielkość bufora musi pasować do formatu"
|
||||||
@ -3304,6 +3333,10 @@ msgstr "nie dość argumentów przy formatowaniu"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr "liczba punktów musi wynosić co najmniej 2"
|
msgstr "liczba punktów musi wynosić co najmniej 2"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -3360,6 +3393,10 @@ msgstr ""
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr "offset poza zakresem"
|
msgstr "offset poza zakresem"
|
||||||
@ -3916,6 +3953,10 @@ msgstr ""
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -6,7 +6,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-01-13 02:19+0000\n"
|
"PO-Revision-Date: 2021-01-22 15:30+0000\n"
|
||||||
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
@ -14,7 +14,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 4.4.1-dev\n"
|
"X-Generator: Weblate 4.5-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -50,6 +50,10 @@ msgstr " Arquivo \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Arquivo \"%q\", linha %d"
|
msgstr " Arquivo \"%q\", linha %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr " é do tipo %q\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " saída:\n"
|
msgstr " saída:\n"
|
||||||
@ -877,6 +881,10 @@ msgstr "Canal EXTINT em uso"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Erro no regex"
|
msgstr "Erro no regex"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr "Erro: Falha na vinculação"
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1270,10 +1278,18 @@ msgstr "O Security_mode é inválido"
|
|||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr "Tamanho inválido"
|
msgstr "Tamanho inválido"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr "Soquete inválido para o TLS"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr "Estado inválido"
|
msgstr "Estado inválido"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr "Uso inválido do soquete TLS"
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
msgstr "A voz é inválida"
|
msgstr "A voz é inválida"
|
||||||
@ -1290,6 +1306,10 @@ msgstr "Aqruivo de ondas inválido"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "O comprimento do bit/palavra são inválidos"
|
msgstr "O comprimento do bit/palavra são inválidos"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr "Problema na configuração do SO_REUSEADDR"
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "A chave deve ter 16, 24 ou 32 bytes de comprimento"
|
msgstr "A chave deve ter 16, 24 ou 32 bytes de comprimento"
|
||||||
@ -1577,7 +1597,7 @@ msgstr "A operação expirou"
|
|||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr "Sem memória"
|
msgstr "Sem memória"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr "Sem soquetes"
|
msgstr "Sem soquetes"
|
||||||
|
|
||||||
@ -2078,8 +2098,9 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr "Erro não tratado do ESP TLS %d %d %x %d"
|
msgstr "Erro não tratado do ESP TLS %d %d %x %d"
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
msgstr "Falha desconhecida"
|
msgid "Unknown failure %d"
|
||||||
|
msgstr "Falha desconhecida %d"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2355,10 +2376,18 @@ msgstr "bits_per_sample deve ser 8 ou 16"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "ramo fora do alcance"
|
msgstr "ramo fora do alcance"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr "o tamanho do buffer é menor do que o tamanho que foi solicitado"
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "o buffer deve ser um objeto como bytes"
|
msgstr "o buffer deve ser um objeto como bytes"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr "o tamanho do buffer deve ser um múltiplo do tamanho do elemento"
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr "o tamanho do buffer deve coincidir com o formato"
|
msgstr "o tamanho do buffer deve coincidir com o formato"
|
||||||
@ -3375,6 +3404,10 @@ msgstr "argumentos insuficientes para o formato da string"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr "a quantidade dos pontos deve ser pelo menos 2"
|
msgstr "a quantidade dos pontos deve ser pelo menos 2"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr "objeto "
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr "o objeto '%q' não é uma tupla ou uma lista"
|
msgstr "o objeto '%q' não é uma tupla ou uma lista"
|
||||||
@ -3431,6 +3464,10 @@ msgstr "o offset é muito grande"
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr "o offset deve ser >= 0"
|
msgstr "o offset deve ser >= 0"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr "o offset deve ser positivo e não maior do que o comprimento do buffer"
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr "desvio fora dos limites"
|
msgstr "desvio fora dos limites"
|
||||||
@ -3992,6 +4029,10 @@ msgstr "o tempo limite do watchdog deve ser maior que 0"
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr "a largura deve ser maior que zero"
|
msgstr "a largura deve ser maior que zero"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr "o wifi não está ativo"
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr "a janela deve ser <= intervalo"
|
msgstr "a janela deve ser <= intervalo"
|
||||||
@ -4056,6 +4097,9 @@ msgstr "zi deve ser de um tipo float"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi deve estar na forma (n_section, 2)"
|
msgstr "zi deve estar na forma (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Unknown failure"
|
||||||
|
#~ msgstr "Falha desconhecida"
|
||||||
|
|
||||||
#~ msgid "Only one alarm.touch alarm can be set."
|
#~ msgid "Only one alarm.touch alarm can be set."
|
||||||
#~ msgstr "Apenas um alarme alarm.touch pode ser definido."
|
#~ msgstr "Apenas um alarme alarm.touch pode ser definido."
|
||||||
|
|
||||||
|
98
locale/sv.po
98
locale/sv.po
@ -6,7 +6,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2021-01-05 21:03+0000\n"
|
"PO-Revision-Date: 2021-01-25 19:32+0000\n"
|
||||||
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
@ -14,7 +14,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 4.4.1-dev\n"
|
"X-Generator: Weblate 4.5-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -50,6 +50,10 @@ msgstr " Filen \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Fil \"%q\", rad %d"
|
msgstr " Fil \"%q\", rad %d"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr " är av typen %q\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " utdata:\n"
|
msgstr " utdata:\n"
|
||||||
@ -123,7 +127,7 @@ msgstr "%q() kräver %d positionsargument men %d gavs"
|
|||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s error 0x%x"
|
msgid "%s error 0x%x"
|
||||||
msgstr ""
|
msgstr "%s fel 0x%x"
|
||||||
|
|
||||||
#: py/argcheck.c
|
#: py/argcheck.c
|
||||||
msgid "'%q' argument required"
|
msgid "'%q' argument required"
|
||||||
@ -289,7 +293,7 @@ msgstr "3-arguments pow() stöds inte"
|
|||||||
|
|
||||||
#: shared-module/msgpack/__init__.c
|
#: shared-module/msgpack/__init__.c
|
||||||
msgid "64 bit types"
|
msgid "64 bit types"
|
||||||
msgstr ""
|
msgstr "64-bitars typer"
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||||
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
||||||
@ -555,7 +559,7 @@ msgstr "CBC-block måste vara multiplar om 16 byte"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "CRC or checksum was invalid"
|
msgid "CRC or checksum was invalid"
|
||||||
msgstr ""
|
msgstr "CRC eller checksumma var ogiltig"
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "Call super().__init__() before accessing native object."
|
msgid "Call super().__init__() before accessing native object."
|
||||||
@ -866,6 +870,10 @@ msgstr "EXTINT-kanalen används redan"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Fel i regex"
|
msgstr "Fel i regex"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr "Fel: Bind misslyckades"
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -1014,7 +1022,7 @@ msgstr "Funktion kräver lås"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Generic Failure"
|
msgid "Generic Failure"
|
||||||
msgstr ""
|
msgstr "Generiskt fel"
|
||||||
|
|
||||||
#: shared-bindings/displayio/Display.c
|
#: shared-bindings/displayio/Display.c
|
||||||
#: shared-bindings/displayio/EPaperDisplay.c
|
#: shared-bindings/displayio/EPaperDisplay.c
|
||||||
@ -1256,11 +1264,19 @@ msgstr "Ogiltigt säkerhetsläge"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr "Ogiltig storlek"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr "Ogiltig socket för TLS"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr "Ogiltigt tillstånd"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr "Ogiltig användning av TLS Socket"
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
@ -1278,6 +1294,10 @@ msgstr "Ogiltig wave-fil"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "Ogiltig word-/bitlängd"
|
msgstr "Ogiltig word-/bitlängd"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr "Misslyckades att sätta SO_REUSEADDR"
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "Nyckeln måste vara 16, 24 eller 32 byte lång"
|
msgstr "Nyckeln måste vara 16, 24 eller 32 byte lång"
|
||||||
@ -1304,7 +1324,7 @@ msgstr "Length måste vara positiv"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "MAC address was invalid"
|
msgid "MAC address was invalid"
|
||||||
msgstr ""
|
msgstr "MAC-adressen var ogiltig"
|
||||||
|
|
||||||
#: shared-module/bitbangio/SPI.c
|
#: shared-module/bitbangio/SPI.c
|
||||||
msgid "MISO pin init failed."
|
msgid "MISO pin init failed."
|
||||||
@ -1540,7 +1560,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr "Endast ett TouchAlarm kan ställas in för djupsömn."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
@ -1556,17 +1576,17 @@ msgstr "Endast raw int stöds för ip"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr "Operation eller funktion stöds inte"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Operation timed out"
|
msgid "Operation timed out"
|
||||||
msgstr ""
|
msgstr "Åtgärden orsakade timeout"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr "Slut på minne"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr "Slut på sockets"
|
msgstr "Slut på sockets"
|
||||||
|
|
||||||
@ -1576,7 +1596,7 @@ msgstr "Översampling måste vara multipel av 8."
|
|||||||
|
|
||||||
#: shared-bindings/audiobusio/PDMIn.c
|
#: shared-bindings/audiobusio/PDMIn.c
|
||||||
msgid "PDMIn not available"
|
msgid "PDMIn not available"
|
||||||
msgstr ""
|
msgstr "PDMIn inte tillgänglig"
|
||||||
|
|
||||||
#: shared-bindings/pwmio/PWMOut.c
|
#: shared-bindings/pwmio/PWMOut.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -1598,7 +1618,7 @@ msgstr "ParallelBus stöds ännu inte"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
||||||
msgid "Peripheral in use"
|
msgid "Peripheral in use"
|
||||||
msgstr ""
|
msgstr "Periferi i bruk"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "Permission denied"
|
msgid "Permission denied"
|
||||||
@ -1728,7 +1748,7 @@ msgstr "Skrivskyddat objekt"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Received response was invalid"
|
msgid "Received response was invalid"
|
||||||
msgstr ""
|
msgstr "Mottaget svar var ogiltigt"
|
||||||
|
|
||||||
#: shared-bindings/displayio/EPaperDisplay.c
|
#: shared-bindings/displayio/EPaperDisplay.c
|
||||||
msgid "Refresh too soon"
|
msgid "Refresh too soon"
|
||||||
@ -1744,7 +1764,7 @@ msgstr "Det begärda AES-läget stöds inte"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Requested resource not found"
|
msgid "Requested resource not found"
|
||||||
msgstr ""
|
msgstr "Begärd resurs hittades inte"
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
msgid "Right channel unsupported"
|
msgid "Right channel unsupported"
|
||||||
@ -2058,8 +2078,9 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr "Ej hanterat ESP TLS-fel %d-%d-%x-%d"
|
msgstr "Ej hanterat ESP TLS-fel %d-%d-%x-%d"
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
msgstr "Okänt fel"
|
msgid "Unknown failure %d"
|
||||||
|
msgstr "Okänt fel %d"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2130,7 +2151,7 @@ msgstr "Värdets längd > max_length"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Version was invalid"
|
msgid "Version was invalid"
|
||||||
msgstr ""
|
msgstr "Versionen var ogiltig"
|
||||||
|
|
||||||
#: py/emitnative.c
|
#: py/emitnative.c
|
||||||
msgid "Viper functions don't currently support more than 4 arguments"
|
msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
@ -2331,10 +2352,18 @@ msgstr "bits_per_sample måste vara 8 eller 16"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "branch utanför räckvidd"
|
msgstr "branch utanför räckvidd"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr "bufferten är mindre än begärd storlek"
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "buffer måste vara en byte-liknande objekt"
|
msgstr "buffer måste vara en byte-liknande objekt"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr "buffertstorlek måste vara en multipel av elementstorlek"
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr "buffertstorleken måste matcha formatet"
|
msgstr "buffertstorleken måste matcha formatet"
|
||||||
@ -2544,7 +2573,7 @@ msgstr "circle kan endast registreras i en förälder"
|
|||||||
|
|
||||||
#: shared-bindings/msgpack/ExtType.c
|
#: shared-bindings/msgpack/ExtType.c
|
||||||
msgid "code outside range 0~127"
|
msgid "code outside range 0~127"
|
||||||
msgstr ""
|
msgstr "kod utanför intervallet 0~127"
|
||||||
|
|
||||||
#: shared-bindings/displayio/Palette.c
|
#: shared-bindings/displayio/Palette.c
|
||||||
msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)"
|
msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)"
|
||||||
@ -2632,7 +2661,7 @@ msgstr "standard \"except\" måste ligga sist"
|
|||||||
|
|
||||||
#: shared-bindings/msgpack/__init__.c
|
#: shared-bindings/msgpack/__init__.c
|
||||||
msgid "default is not a function"
|
msgid "default is not a function"
|
||||||
msgstr ""
|
msgstr "default är inte en funktion"
|
||||||
|
|
||||||
#: shared-bindings/audiobusio/PDMIn.c
|
#: shared-bindings/audiobusio/PDMIn.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -2738,7 +2767,7 @@ msgstr "förväntar nyckel:värde för dict"
|
|||||||
|
|
||||||
#: shared-bindings/msgpack/__init__.c
|
#: shared-bindings/msgpack/__init__.c
|
||||||
msgid "ext_hook is not a function"
|
msgid "ext_hook is not a function"
|
||||||
msgstr ""
|
msgstr "ext_hook är inte en funktion"
|
||||||
|
|
||||||
#: py/argcheck.c
|
#: py/argcheck.c
|
||||||
msgid "extra keyword arguments given"
|
msgid "extra keyword arguments given"
|
||||||
@ -3277,7 +3306,7 @@ msgstr "ingen bindning för ickelokal hittad"
|
|||||||
|
|
||||||
#: shared-module/msgpack/__init__.c
|
#: shared-module/msgpack/__init__.c
|
||||||
msgid "no default packer"
|
msgid "no default packer"
|
||||||
msgstr ""
|
msgstr "ingen standardpackare"
|
||||||
|
|
||||||
#: py/builtinimport.c
|
#: py/builtinimport.c
|
||||||
msgid "no module named '%q'"
|
msgid "no module named '%q'"
|
||||||
@ -3344,6 +3373,10 @@ msgstr "inte tillräckligt med argument för formatsträng"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr "antal punkter måste vara minst 2"
|
msgstr "antal punkter måste vara minst 2"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr "objekt "
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr "objektet '%q' är inte en tuple eller list"
|
msgstr "objektet '%q' är inte en tuple eller list"
|
||||||
@ -3400,6 +3433,10 @@ msgstr "offset är för stor"
|
|||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr "offset måste vara >= 0"
|
msgstr "offset måste vara >= 0"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr "offset måste vara icke-negativt och inte längre än buffertlängd"
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
msgstr "offset utanför gränserna"
|
msgstr "offset utanför gränserna"
|
||||||
@ -3619,7 +3656,7 @@ msgstr "shape måste vara en tuple"
|
|||||||
|
|
||||||
#: shared-module/msgpack/__init__.c
|
#: shared-module/msgpack/__init__.c
|
||||||
msgid "short read"
|
msgid "short read"
|
||||||
msgstr ""
|
msgstr "kort läsning"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "sign not allowed in string format specifier"
|
msgid "sign not allowed in string format specifier"
|
||||||
@ -3957,6 +3994,10 @@ msgstr "watchdog timeout måste vara större än 0"
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr "width måste vara större än noll"
|
msgstr "width måste vara större än noll"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr "wifi är inte aktiverat"
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr "window måste vara <= interval"
|
msgstr "window måste vara <= interval"
|
||||||
@ -3995,7 +4036,7 @@ msgstr "x-värde utanför intervall"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
||||||
msgid "xTaskCreate failed"
|
msgid "xTaskCreate failed"
|
||||||
msgstr ""
|
msgstr "xTaskCreate misslyckades"
|
||||||
|
|
||||||
#: shared-bindings/displayio/Shape.c
|
#: shared-bindings/displayio/Shape.c
|
||||||
msgid "y should be an int"
|
msgid "y should be an int"
|
||||||
@ -4021,6 +4062,9 @@ msgstr "zi måste vara av typ float"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi måste vara i formen (n_section, 2)"
|
msgstr "zi måste vara i formen (n_section, 2)"
|
||||||
|
|
||||||
|
#~ msgid "Unknown failure"
|
||||||
|
#~ msgstr "Okänt fel"
|
||||||
|
|
||||||
#~ msgid "Only one alarm.touch alarm can be set."
|
#~ msgid "Only one alarm.touch alarm can be set."
|
||||||
#~ msgstr "Endast ett larm av typ alarm.touch kan ställas in."
|
#~ msgstr "Endast ett larm av typ alarm.touch kan ställas in."
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: circuitpython-cn\n"
|
"Project-Id-Version: circuitpython-cn\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
|
||||||
"PO-Revision-Date: 2020-11-19 01:28+0000\n"
|
"PO-Revision-Date: 2021-01-25 19:32+0000\n"
|
||||||
"Last-Translator: hexthat <hexthat@gmail.com>\n"
|
"Last-Translator: hexthat <hexthat@gmail.com>\n"
|
||||||
"Language-Team: Chinese Hanyu Pinyin\n"
|
"Language-Team: Chinese Hanyu Pinyin\n"
|
||||||
"Language: zh_Latn_pinyin\n"
|
"Language: zh_Latn_pinyin\n"
|
||||||
@ -15,19 +15,23 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Weblate 4.4-dev\n"
|
"X-Generator: Weblate 4.5-dev\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"Code done running.\n"
|
"Code done running.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Dàimǎ yùnxíng wánbì.\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"Code stopped by auto-reload.\n"
|
"Code stopped by auto-reload.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"zì dòng chóng xīn jiā zǎi tíng zhǐ de dài mǎ.\n"
|
||||||
|
|
||||||
#: supervisor/shared/safe_mode.c
|
#: supervisor/shared/safe_mode.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -47,6 +51,10 @@ msgstr " Wénjiàn \"%q\""
|
|||||||
msgid " File \"%q\", line %d"
|
msgid " File \"%q\", line %d"
|
||||||
msgstr " Wénjiàn \"%q\", dì %d xíng"
|
msgstr " Wénjiàn \"%q\", dì %d xíng"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid " is of type %q\n"
|
||||||
|
msgstr " shì %q lèi xíng\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid " output:\n"
|
msgid " output:\n"
|
||||||
msgstr " shūchū:\n"
|
msgstr " shūchū:\n"
|
||||||
@ -121,7 +129,7 @@ msgstr "%q() cǎiyòng %d wèizhì cānshù, dàn gěi chū %d"
|
|||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s error 0x%x"
|
msgid "%s error 0x%x"
|
||||||
msgstr ""
|
msgstr "%s cuò wù 0x%x"
|
||||||
|
|
||||||
#: py/argcheck.c
|
#: py/argcheck.c
|
||||||
msgid "'%q' argument required"
|
msgid "'%q' argument required"
|
||||||
@ -287,7 +295,7 @@ msgstr "bù zhīchí 3-arg pow ()"
|
|||||||
|
|
||||||
#: shared-module/msgpack/__init__.c
|
#: shared-module/msgpack/__init__.c
|
||||||
msgid "64 bit types"
|
msgid "64 bit types"
|
||||||
msgstr ""
|
msgstr "64 wèi lèi xíng"
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||||
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
||||||
@ -553,7 +561,7 @@ msgstr "CBC kuài bì xū shì 16 zì jié de bèi shù"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "CRC or checksum was invalid"
|
msgid "CRC or checksum was invalid"
|
||||||
msgstr ""
|
msgstr "CRC huò jiào yàn hé wú xiào"
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "Call super().__init__() before accessing native object."
|
msgid "Call super().__init__() before accessing native object."
|
||||||
@ -561,15 +569,17 @@ msgstr "Zài fǎngwèn běn jī wùjiàn zhīqián diàoyòng super().__init__()
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Can only alarm on RTC IO from deep sleep."
|
msgid "Can only alarm on RTC IO from deep sleep."
|
||||||
msgstr ""
|
msgstr "zhǐ néng zài RTC Io shàng cóng shēn dù shuì mián zhōng bào jǐng."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Can only alarm on one low pin while others alarm high from deep sleep."
|
msgid "Can only alarm on one low pin while others alarm high from deep sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Zhǐ néng zài yīgè dī diàn píng yǐn jiǎo shàng fāchū jǐngbào, ér qítā yǐn "
|
||||||
|
"jiǎo cóng shēndù shuìmián zhōng fāchū gāo diàn píng jǐngbào."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Can only alarm on two low pins from deep sleep."
|
msgid "Can only alarm on two low pins from deep sleep."
|
||||||
msgstr ""
|
msgstr "zhǐ néng cóng shēn dù shuì mián zhōng bào jǐng liǎng gè dī yǐn jiǎo."
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||||
msgid "Can't set CCCD on local Characteristic"
|
msgid "Can't set CCCD on local Characteristic"
|
||||||
@ -605,7 +615,7 @@ msgstr "Wúfǎ shūchū tóng yīgè yǐn jiǎo shàng de liǎng gè píndào"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot pull on input-only pin."
|
msgid "Cannot pull on input-only pin."
|
||||||
msgstr ""
|
msgstr "wú fǎ lā dòng jǐn shū rù yǐn jiǎo."
|
||||||
|
|
||||||
#: shared-module/bitbangio/SPI.c
|
#: shared-module/bitbangio/SPI.c
|
||||||
msgid "Cannot read without MISO pin."
|
msgid "Cannot read without MISO pin."
|
||||||
@ -652,7 +662,7 @@ msgstr "Wúfǎ gēnggǎi yǐ zài shǐyòng de jìshí qì shàng de pínlǜ"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
#: ports/esp32s2/common-hal/alarm/pin/PinAlarm.c
|
||||||
msgid "Cannot wake on pin edge. Only level."
|
msgid "Cannot wake on pin edge. Only level."
|
||||||
msgstr ""
|
msgstr "wú fǎ zài yǐn jiǎo biān yuán huàn xǐng. jǐn jí bié."
|
||||||
|
|
||||||
#: shared-module/bitbangio/SPI.c
|
#: shared-module/bitbangio/SPI.c
|
||||||
msgid "Cannot write without MOSI pin."
|
msgid "Cannot write without MOSI pin."
|
||||||
@ -859,6 +869,10 @@ msgstr "EXTINT píndào yǐjīng shǐyòng"
|
|||||||
msgid "Error in regex"
|
msgid "Error in regex"
|
||||||
msgstr "Zhèngzé biǎodá shì cuòwù"
|
msgstr "Zhèngzé biǎodá shì cuòwù"
|
||||||
|
|
||||||
|
#: shared-bindings/socketpool/Socket.c
|
||||||
|
msgid "Error: Failure to bind"
|
||||||
|
msgstr "cuò wù: bǎng dìng shī bài"
|
||||||
|
|
||||||
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
#: py/enum.c shared-bindings/_bleio/__init__.c shared-bindings/aesio/aes.c
|
||||||
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
#: shared-bindings/busio/SPI.c shared-bindings/microcontroller/Pin.c
|
||||||
#: shared-bindings/neopixel_write/__init__.c
|
#: shared-bindings/neopixel_write/__init__.c
|
||||||
@ -894,7 +908,7 @@ msgstr "Qídài yīgè dìzhǐ"
|
|||||||
|
|
||||||
#: shared-bindings/alarm/__init__.c
|
#: shared-bindings/alarm/__init__.c
|
||||||
msgid "Expected an alarm"
|
msgid "Expected an alarm"
|
||||||
msgstr ""
|
msgstr "yù qī yǒu jǐng bào"
|
||||||
|
|
||||||
#: shared-module/_pixelbuf/PixelBuf.c
|
#: shared-module/_pixelbuf/PixelBuf.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -911,7 +925,7 @@ msgstr "FFT jǐn wéi ndarrays dìng yì"
|
|||||||
|
|
||||||
#: extmod/ulab/code/fft/fft.c
|
#: extmod/ulab/code/fft/fft.c
|
||||||
msgid "FFT is implemented for linear arrays only"
|
msgid "FFT is implemented for linear arrays only"
|
||||||
msgstr ""
|
msgstr "FFT jǐn shì yòng yú xiàn xìng zhèn liè"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Failed SSL handshake"
|
msgid "Failed SSL handshake"
|
||||||
@ -985,7 +999,7 @@ msgstr "guò lǜ qì tài fù zá"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/dualbank/__init__.c
|
#: ports/esp32s2/common-hal/dualbank/__init__.c
|
||||||
msgid "Firmware image is invalid"
|
msgid "Firmware image is invalid"
|
||||||
msgstr ""
|
msgstr "gù jiàn yìng xiàng wú xiào"
|
||||||
|
|
||||||
#: ports/cxd56/common-hal/camera/Camera.c
|
#: ports/cxd56/common-hal/camera/Camera.c
|
||||||
msgid "Format not supported"
|
msgid "Format not supported"
|
||||||
@ -1007,7 +1021,7 @@ msgstr "Hánshù xūyào suǒdìng"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Generic Failure"
|
msgid "Generic Failure"
|
||||||
msgstr ""
|
msgstr "tōng yòng gù zhàng"
|
||||||
|
|
||||||
#: shared-bindings/displayio/Display.c
|
#: shared-bindings/displayio/Display.c
|
||||||
#: shared-bindings/displayio/EPaperDisplay.c
|
#: shared-bindings/displayio/EPaperDisplay.c
|
||||||
@ -1047,7 +1061,7 @@ msgstr "I2SOut bù kě yòng"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
|
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
|
||||||
msgid "IOs 0, 2 & 4 do not support internal pullup in sleep"
|
msgid "IOs 0, 2 & 4 do not support internal pullup in sleep"
|
||||||
msgstr ""
|
msgstr "IOS 0, 2 + 4 bù zhī chí shuì mián zhōng de nèi bù shàng lā"
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -1135,7 +1149,7 @@ msgstr "Wúxiào de PWM pínlǜ"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
|
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
|
||||||
msgid "Invalid Pin"
|
msgid "Invalid Pin"
|
||||||
msgstr ""
|
msgstr "wú xiào yǐn jiǎo"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
|
||||||
@ -1249,11 +1263,19 @@ msgstr "Ānquán móshì wúxiào"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid size"
|
msgid "Invalid size"
|
||||||
msgstr ""
|
msgstr "dà xiǎo wú xiào"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid socket for TLS"
|
||||||
|
msgstr "TLS de chā zuò wú xiào"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Invalid state"
|
msgid "Invalid state"
|
||||||
msgstr ""
|
msgstr "wú xiào zhuàng tài"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Invalid use of TLS Socket"
|
||||||
|
msgstr "TLS tào jiē zì de wú xiào shǐ yòng"
|
||||||
|
|
||||||
#: shared-bindings/audiomixer/Mixer.c
|
#: shared-bindings/audiomixer/Mixer.c
|
||||||
msgid "Invalid voice"
|
msgid "Invalid voice"
|
||||||
@ -1271,6 +1293,10 @@ msgstr "Wúxiào de làng làngcháo wénjiàn"
|
|||||||
msgid "Invalid word/bit length"
|
msgid "Invalid word/bit length"
|
||||||
msgstr "Wúxiào de zì/wèi chángdù"
|
msgstr "Wúxiào de zì/wèi chángdù"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
|
msgid "Issue setting SO_REUSEADDR"
|
||||||
|
msgstr "wèn tí shè zhì SO_REUSEADDR"
|
||||||
|
|
||||||
#: shared-bindings/aesio/aes.c
|
#: shared-bindings/aesio/aes.c
|
||||||
msgid "Key must be 16, 24, or 32 bytes long"
|
msgid "Key must be 16, 24, or 32 bytes long"
|
||||||
msgstr "mì yào bì xū wéi 16, 24 huò 32 zì jié cháng"
|
msgstr "mì yào bì xū wéi 16, 24 huò 32 zì jié cháng"
|
||||||
@ -1297,7 +1323,7 @@ msgstr "Chángdù bìxū shìfēi fùshù"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "MAC address was invalid"
|
msgid "MAC address was invalid"
|
||||||
msgstr ""
|
msgstr "MAC dì zhǐ wú xiào"
|
||||||
|
|
||||||
#: shared-module/bitbangio/SPI.c
|
#: shared-module/bitbangio/SPI.c
|
||||||
msgid "MISO pin init failed."
|
msgid "MISO pin init failed."
|
||||||
@ -1347,7 +1373,7 @@ msgstr "bì xū shǐ yòng 6 RGB yǐn jiǎo de bèi shù, ér bù shì %d"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/nvm/ByteArray.c
|
#: ports/esp32s2/common-hal/nvm/ByteArray.c
|
||||||
msgid "NVS Error"
|
msgid "NVS Error"
|
||||||
msgstr ""
|
msgstr "NVS cuò wù"
|
||||||
|
|
||||||
#: py/parse.c
|
#: py/parse.c
|
||||||
msgid "Name too long"
|
msgid "Name too long"
|
||||||
@ -1370,7 +1396,7 @@ msgstr "Wèi zhǎodào DMA píndào"
|
|||||||
#: shared-module/adafruit_bus_device/I2CDevice.c
|
#: shared-module/adafruit_bus_device/I2CDevice.c
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "No I2C device at address: %x"
|
msgid "No I2C device at address: %x"
|
||||||
msgstr ""
|
msgstr "dì zhǐ wú I2C shè bèi: %x"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
#: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||||
#: ports/stm/common-hal/busio/SPI.c
|
#: ports/stm/common-hal/busio/SPI.c
|
||||||
@ -1511,7 +1537,7 @@ msgstr "Jǐn zhīchí IPv4 dìzhǐ"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
||||||
msgid "Only IPv4 sockets supported"
|
msgid "Only IPv4 sockets supported"
|
||||||
msgstr ""
|
msgstr "jǐn zhī chí IPv4 tào jiē zì"
|
||||||
|
|
||||||
#: shared-module/displayio/OnDiskBitmap.c
|
#: shared-module/displayio/OnDiskBitmap.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -1532,11 +1558,11 @@ msgstr ""
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
#: ports/esp32s2/common-hal/alarm/touch/TouchAlarm.c
|
||||||
msgid "Only one TouchAlarm can be set in deep sleep."
|
msgid "Only one TouchAlarm can be set in deep sleep."
|
||||||
msgstr ""
|
msgstr "zhǐ yǒu yí gè chù mō bì kě yǐ shè zhì zài shēn dù shuì mián."
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
#: ports/esp32s2/common-hal/alarm/time/TimeAlarm.c
|
||||||
msgid "Only one alarm.time alarm can be set."
|
msgid "Only one alarm.time alarm can be set."
|
||||||
msgstr ""
|
msgstr "zhǐ néng shè zhì yí gè bào jǐng."
|
||||||
|
|
||||||
#: shared-module/displayio/ColorConverter.c
|
#: shared-module/displayio/ColorConverter.c
|
||||||
msgid "Only one color can be transparent at a time"
|
msgid "Only one color can be transparent at a time"
|
||||||
@ -1548,17 +1574,17 @@ msgstr "Ip jǐn zhīchí raw int"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Operation or feature not supported"
|
msgid "Operation or feature not supported"
|
||||||
msgstr ""
|
msgstr "bù zhī chí cāo zuò huò gōng néng"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Operation timed out"
|
msgid "Operation timed out"
|
||||||
msgstr ""
|
msgstr "cāo zuò yǐ fēn shí"
|
||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Out of memory"
|
msgid "Out of memory"
|
||||||
msgstr ""
|
msgstr "nèi cún bù zú"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
|
#: ports/esp32s2/common-hal/socketpool/Socket.c
|
||||||
msgid "Out of sockets"
|
msgid "Out of sockets"
|
||||||
msgstr "tào jiē zì wài"
|
msgstr "tào jiē zì wài"
|
||||||
|
|
||||||
@ -1568,7 +1594,7 @@ msgstr "Guò cǎiyàng bìxū shì 8 de bèishù."
|
|||||||
|
|
||||||
#: shared-bindings/audiobusio/PDMIn.c
|
#: shared-bindings/audiobusio/PDMIn.c
|
||||||
msgid "PDMIn not available"
|
msgid "PDMIn not available"
|
||||||
msgstr ""
|
msgstr "PDMIn bù kě yòng"
|
||||||
|
|
||||||
#: shared-bindings/pwmio/PWMOut.c
|
#: shared-bindings/pwmio/PWMOut.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -1589,7 +1615,7 @@ msgstr "Shàng bù zhīchí ParallelBus"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
||||||
msgid "Peripheral in use"
|
msgid "Peripheral in use"
|
||||||
msgstr ""
|
msgstr "shǐ yòng zhōng de wài shè"
|
||||||
|
|
||||||
#: py/moduerrno.c
|
#: py/moduerrno.c
|
||||||
msgid "Permission denied"
|
msgid "Permission denied"
|
||||||
@ -1658,11 +1684,13 @@ msgstr "Qiánzhuì huǎnchōng qū bìxū zài duī shàng"
|
|||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
|
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
|
||||||
msgstr ""
|
msgstr "àn rèn hé jiàn jìn rù REPL. shǐ yòng CTRL-D zhòng xīn jiā zǎi .\n"
|
||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
|
msgid "Pretending to deep sleep until alarm, CTRL-C or file write.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"jiǎ zhuāng shēn dù shuì mián , zhí dào bào jǐng , CTRL-C huò wén jiàn xiě "
|
||||||
|
"rù .\n"
|
||||||
|
|
||||||
#: shared-bindings/digitalio/DigitalInOut.c
|
#: shared-bindings/digitalio/DigitalInOut.c
|
||||||
msgid "Pull not used when direction is output."
|
msgid "Pull not used when direction is output."
|
||||||
@ -1714,7 +1742,7 @@ msgstr "Zhǐ dú duìxiàng"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Received response was invalid"
|
msgid "Received response was invalid"
|
||||||
msgstr ""
|
msgstr "shōu dào de xiǎng yìng wú xiào"
|
||||||
|
|
||||||
#: shared-bindings/displayio/EPaperDisplay.c
|
#: shared-bindings/displayio/EPaperDisplay.c
|
||||||
msgid "Refresh too soon"
|
msgid "Refresh too soon"
|
||||||
@ -1730,7 +1758,7 @@ msgstr "Qǐngqiú de AES móshì bù shòu zhīchí"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Requested resource not found"
|
msgid "Requested resource not found"
|
||||||
msgstr ""
|
msgstr "wèi zhǎo dào qǐng qiú de zī yuán"
|
||||||
|
|
||||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||||
msgid "Right channel unsupported"
|
msgid "Right channel unsupported"
|
||||||
@ -1842,7 +1870,7 @@ msgstr "Dìngyì zhìshǎo yīgè UART yǐn jiǎo"
|
|||||||
|
|
||||||
#: shared-bindings/alarm/time/TimeAlarm.c
|
#: shared-bindings/alarm/time/TimeAlarm.c
|
||||||
msgid "Supply one of monotonic_time or epoch_time"
|
msgid "Supply one of monotonic_time or epoch_time"
|
||||||
msgstr ""
|
msgstr "tí gòng qí zhōng yī monotonic_time huò epoch_time"
|
||||||
|
|
||||||
#: shared-bindings/gnss/GNSS.c
|
#: shared-bindings/gnss/GNSS.c
|
||||||
msgid "System entry must be gnss.SatelliteSystem"
|
msgid "System entry must be gnss.SatelliteSystem"
|
||||||
@ -1916,7 +1944,7 @@ msgstr "Píng pū kuāndù bìxū huàfēn wèi tú kuāndù"
|
|||||||
|
|
||||||
#: shared-bindings/alarm/time/TimeAlarm.c
|
#: shared-bindings/alarm/time/TimeAlarm.c
|
||||||
msgid "Time is in the past."
|
msgid "Time is in the past."
|
||||||
msgstr ""
|
msgstr "shí jiān yǐ jīng guò qù."
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/Adapter.c
|
#: ports/nrf/common-hal/_bleio/Adapter.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2031,7 +2059,7 @@ msgstr "Wúfǎ xiě rù nvm."
|
|||||||
|
|
||||||
#: shared-bindings/alarm/SleepMemory.c
|
#: shared-bindings/alarm/SleepMemory.c
|
||||||
msgid "Unable to write to sleep_memory."
|
msgid "Unable to write to sleep_memory."
|
||||||
msgstr ""
|
msgstr "wú fǎ xiě rù sleep_memory。"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/UUID.c
|
#: ports/nrf/common-hal/_bleio/UUID.c
|
||||||
msgid "Unexpected nrfx uuid type"
|
msgid "Unexpected nrfx uuid type"
|
||||||
@ -2043,8 +2071,9 @@ msgid "Unhandled ESP TLS error %d %d %x %d"
|
|||||||
msgstr "Wèi chǔlǐ de ESP TLS cuòwù %d %d %x %d"
|
msgstr "Wèi chǔlǐ de ESP TLS cuòwù %d %d %x %d"
|
||||||
|
|
||||||
#: shared-bindings/wifi/Radio.c
|
#: shared-bindings/wifi/Radio.c
|
||||||
msgid "Unknown failure"
|
#, c-format
|
||||||
msgstr "Wèizhī gùzhàng"
|
msgid "Unknown failure %d"
|
||||||
|
msgstr "wèi zhī gù zhàng %d"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/__init__.c
|
#: ports/nrf/common-hal/_bleio/__init__.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2101,7 +2130,7 @@ msgstr "Bù zhīchí de lādòng zhí."
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/dualbank/__init__.c
|
#: ports/esp32s2/common-hal/dualbank/__init__.c
|
||||||
msgid "Update Failed"
|
msgid "Update Failed"
|
||||||
msgstr ""
|
msgstr "gēng xīn shī bài"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||||
#: ports/nrf/common-hal/_bleio/Descriptor.c
|
#: ports/nrf/common-hal/_bleio/Descriptor.c
|
||||||
@ -2115,7 +2144,7 @@ msgstr "Zhí chángdù > zuìdà chángdù"
|
|||||||
|
|
||||||
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
#: ports/esp32s2/bindings/espidf/__init__.c ports/esp32s2/esp_error.c
|
||||||
msgid "Version was invalid"
|
msgid "Version was invalid"
|
||||||
msgstr ""
|
msgstr "bǎn běn wú xiào"
|
||||||
|
|
||||||
#: py/emitnative.c
|
#: py/emitnative.c
|
||||||
msgid "Viper functions don't currently support more than 4 arguments"
|
msgid "Viper functions don't currently support more than 4 arguments"
|
||||||
@ -2172,7 +2201,7 @@ msgstr "WiFi mìmǎ bìxū jiè yú 8 dào 63 gè zìfú zhī jiān"
|
|||||||
|
|
||||||
#: main.c
|
#: main.c
|
||||||
msgid "Woken up by alarm.\n"
|
msgid "Woken up by alarm.\n"
|
||||||
msgstr ""
|
msgstr "bèi jǐng bào chǎo xǐng.\n"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||||
msgid "Writes not supported on Characteristic"
|
msgid "Writes not supported on Characteristic"
|
||||||
@ -2229,7 +2258,7 @@ msgstr "argsort cānshù bìxū shì ndarray"
|
|||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "argsort is not implemented for flattened arrays"
|
msgid "argsort is not implemented for flattened arrays"
|
||||||
msgstr ""
|
msgstr "wèi wéi pīn hé shù zǔ shí xiàn argsort"
|
||||||
|
|
||||||
#: py/runtime.c
|
#: py/runtime.c
|
||||||
msgid "argument has wrong type"
|
msgid "argument has wrong type"
|
||||||
@ -2254,7 +2283,7 @@ msgstr "cānshù bìxū shì ndarrays"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "array and index length must be equal"
|
msgid "array and index length must be equal"
|
||||||
msgstr ""
|
msgstr "shù zǔ hé suǒ yǐn cháng dù bì xū xiāng děng"
|
||||||
|
|
||||||
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
|
||||||
#: shared-bindings/nvm/ByteArray.c
|
#: shared-bindings/nvm/ByteArray.c
|
||||||
@ -2263,7 +2292,7 @@ msgstr "yòu cè xūyào shùzǔ/zì jié"
|
|||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "attempt to get (arg)min/(arg)max of empty sequence"
|
msgid "attempt to get (arg)min/(arg)max of empty sequence"
|
||||||
msgstr ""
|
msgstr "cháng shì huò qǔ (arg) zuì xiǎo zhí /(arg) zuì dà kōng xù liè"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "attempt to get argmin/argmax of an empty sequence"
|
msgid "attempt to get argmin/argmax of an empty sequence"
|
||||||
@ -2275,15 +2304,15 @@ msgstr "shǔxìng shàngwèi zhīchí"
|
|||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "axis is out of bounds"
|
msgid "axis is out of bounds"
|
||||||
msgstr ""
|
msgstr "zhóu chāo chū biān jiè"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "axis must be None, or an integer"
|
msgid "axis must be None, or an integer"
|
||||||
msgstr ""
|
msgstr "zhóu bì xū wéi \" wú \" huò zhěng shù"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "axis too long"
|
msgid "axis too long"
|
||||||
msgstr ""
|
msgstr "zhóu tài cháng"
|
||||||
|
|
||||||
#: py/builtinevex.c
|
#: py/builtinevex.c
|
||||||
msgid "bad compile mode"
|
msgid "bad compile mode"
|
||||||
@ -2317,10 +2346,18 @@ msgstr "měi jiàn yàngběn bìxū wèi 8 huò 16"
|
|||||||
msgid "branch not in range"
|
msgid "branch not in range"
|
||||||
msgstr "fēnzhī bùzài fànwéi nèi"
|
msgstr "fēnzhī bùzài fànwéi nèi"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer is smaller than requested size"
|
||||||
|
msgstr "huǎn chōng qū xiǎo yú qǐng qiú de dà xiǎo"
|
||||||
|
|
||||||
#: shared-bindings/audiocore/RawSample.c
|
#: shared-bindings/audiocore/RawSample.c
|
||||||
msgid "buffer must be a bytes-like object"
|
msgid "buffer must be a bytes-like object"
|
||||||
msgstr "huǎnchōng qū bìxū shì zì jié lèi duìxiàng"
|
msgstr "huǎnchōng qū bìxū shì zì jié lèi duìxiàng"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "buffer size must be a multiple of element size"
|
||||||
|
msgstr "huǎn chōng qū dà xiǎo bì xū shì yuán sù dà xiǎo de bèi shù"
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "buffer size must match format"
|
msgid "buffer size must match format"
|
||||||
msgstr "huǎnchōng qū dàxiǎo bìxū pǐpèi géshì"
|
msgstr "huǎnchōng qū dàxiǎo bìxū pǐpèi géshì"
|
||||||
@ -2488,7 +2525,7 @@ msgstr "wúfǎ cóng shǒudòng zìduàn guīgé qiēhuàn dào zìdòng zìduà
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray_operators.c
|
#: extmod/ulab/code/ndarray_operators.c
|
||||||
msgid "cannot cast output with casting rule"
|
msgid "cannot cast output with casting rule"
|
||||||
msgstr ""
|
msgstr "wú fǎ shǐ yòng qiáng zhì zhuǎn huàn guī zé qiáng zhì zhuǎn huàn shū chū"
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "cannot create '%q' instances"
|
msgid "cannot create '%q' instances"
|
||||||
@ -2528,7 +2565,7 @@ msgstr "quānzi zhǐ néng zài yī wèi jiāzhǎng zhōng zhùcè"
|
|||||||
|
|
||||||
#: shared-bindings/msgpack/ExtType.c
|
#: shared-bindings/msgpack/ExtType.c
|
||||||
msgid "code outside range 0~127"
|
msgid "code outside range 0~127"
|
||||||
msgstr ""
|
msgstr "dài mǎ chāo chū fàn wéi 0~127"
|
||||||
|
|
||||||
#: shared-bindings/displayio/Palette.c
|
#: shared-bindings/displayio/Palette.c
|
||||||
msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)"
|
msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)"
|
||||||
@ -2595,7 +2632,7 @@ msgstr "wúfǎ quèdìng SD kǎ bǎnběn"
|
|||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "cross is defined for 1D arrays of length 3"
|
msgid "cross is defined for 1D arrays of length 3"
|
||||||
msgstr ""
|
msgstr "duì yú cháng dù wéi 3 de 1D shù zǔ dìng yì cross"
|
||||||
|
|
||||||
#: extmod/ulab/code/approx/approx.c
|
#: extmod/ulab/code/approx/approx.c
|
||||||
msgid "data must be iterable"
|
msgid "data must be iterable"
|
||||||
@ -2607,7 +2644,7 @@ msgstr "shùjù chángdù bìxū xiāngděng"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "data type not understood"
|
msgid "data type not understood"
|
||||||
msgstr ""
|
msgstr "wèi lǐ jiě de shù jù lèi xíng"
|
||||||
|
|
||||||
#: py/parsenum.c
|
#: py/parsenum.c
|
||||||
msgid "decimal numbers not supported"
|
msgid "decimal numbers not supported"
|
||||||
@ -2619,7 +2656,7 @@ msgstr "mòrèn 'except' bìxū shì zuìhòu yīgè"
|
|||||||
|
|
||||||
#: shared-bindings/msgpack/__init__.c
|
#: shared-bindings/msgpack/__init__.c
|
||||||
msgid "default is not a function"
|
msgid "default is not a function"
|
||||||
msgstr ""
|
msgstr "mò rèn zhí bú shì hán shù"
|
||||||
|
|
||||||
#: shared-bindings/audiobusio/PDMIn.c
|
#: shared-bindings/audiobusio/PDMIn.c
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -2646,7 +2683,7 @@ msgstr "bùtóng de cānshù bìxū shì ndarray"
|
|||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "differentiation order out of range"
|
msgid "differentiation order out of range"
|
||||||
msgstr ""
|
msgstr "chā yì shùn xù fàn wéi"
|
||||||
|
|
||||||
#: py/modmath.c py/objfloat.c py/objint_longlong.c py/objint_mpz.c py/runtime.c
|
#: py/modmath.c py/objfloat.c py/objint_longlong.c py/objint_mpz.c py/runtime.c
|
||||||
#: shared-bindings/math/__init__.c
|
#: shared-bindings/math/__init__.c
|
||||||
@ -2679,7 +2716,7 @@ msgstr "jiéwěi_x yīnggāi shì yīgè zhěngshù"
|
|||||||
|
|
||||||
#: shared-bindings/alarm/time/TimeAlarm.c
|
#: shared-bindings/alarm/time/TimeAlarm.c
|
||||||
msgid "epoch_time not supported on this board"
|
msgid "epoch_time not supported on this board"
|
||||||
msgstr ""
|
msgstr "epoch_time bǎn bù zhī chí cǐ bǎn běn"
|
||||||
|
|
||||||
#: ports/nrf/common-hal/busio/UART.c
|
#: ports/nrf/common-hal/busio/UART.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2724,7 +2761,7 @@ msgstr "qídài guānjiàn: Zìdiǎn de jiàzhí"
|
|||||||
|
|
||||||
#: shared-bindings/msgpack/__init__.c
|
#: shared-bindings/msgpack/__init__.c
|
||||||
msgid "ext_hook is not a function"
|
msgid "ext_hook is not a function"
|
||||||
msgstr ""
|
msgstr "ext_hook bú shì hán shù"
|
||||||
|
|
||||||
#: py/argcheck.c
|
#: py/argcheck.c
|
||||||
msgid "extra keyword arguments given"
|
msgid "extra keyword arguments given"
|
||||||
@ -2773,7 +2810,7 @@ msgstr "dì yīgè cānshù bìxū shì yī gè hánshù"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ulab_create.c
|
#: extmod/ulab/code/ulab_create.c
|
||||||
msgid "first argument must be a tuple of ndarrays"
|
msgid "first argument must be a tuple of ndarrays"
|
||||||
msgstr ""
|
msgstr "dì yī gè cān shù bì xū shì yí gè yuán zǔ ndarrays"
|
||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "first argument must be an iterable"
|
msgid "first argument must be an iterable"
|
||||||
@ -2830,7 +2867,7 @@ msgstr "hánshù zài jiàngé mòwěi jùyǒu xiāngtóng de fúhào"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "function is defined for ndarrays only"
|
msgid "function is defined for ndarrays only"
|
||||||
msgstr ""
|
msgstr "hán shù jǐn wéi ndarrays dìng yì"
|
||||||
|
|
||||||
#: py/argcheck.c
|
#: py/argcheck.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -2926,11 +2963,11 @@ msgstr "nèi lián jíhé bìxū shì yīgè hánshù"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "input and output shapes are not compatible"
|
msgid "input and output shapes are not compatible"
|
||||||
msgstr ""
|
msgstr "shū rù hé shū chū xíng zhuàng bù jiān róng"
|
||||||
|
|
||||||
#: extmod/ulab/code/ulab_create.c
|
#: extmod/ulab/code/ulab_create.c
|
||||||
msgid "input argument must be an integer, a tuple, or a list"
|
msgid "input argument must be an integer, a tuple, or a list"
|
||||||
msgstr ""
|
msgstr "shū rù cān shù bì xū shì zhěng shù, yuán zǔ huò liè biǎo"
|
||||||
|
|
||||||
#: extmod/ulab/code/fft/fft.c
|
#: extmod/ulab/code/fft/fft.c
|
||||||
msgid "input array length must be power of 2"
|
msgid "input array length must be power of 2"
|
||||||
@ -2938,7 +2975,7 @@ msgstr "shūrù shùzǔ de chángdù bìxū shì 2 de mì"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ulab_create.c
|
#: extmod/ulab/code/ulab_create.c
|
||||||
msgid "input arrays are not compatible"
|
msgid "input arrays are not compatible"
|
||||||
msgstr ""
|
msgstr "shū rù shù zǔ bù jiān róng"
|
||||||
|
|
||||||
#: extmod/ulab/code/poly/poly.c
|
#: extmod/ulab/code/poly/poly.c
|
||||||
msgid "input data must be an iterable"
|
msgid "input data must be an iterable"
|
||||||
@ -2954,19 +2991,19 @@ msgstr "shūrù jǔzhèn shì qíyì de"
|
|||||||
|
|
||||||
#: extmod/ulab/code/user/user.c
|
#: extmod/ulab/code/user/user.c
|
||||||
msgid "input must be a dense ndarray"
|
msgid "input must be a dense ndarray"
|
||||||
msgstr ""
|
msgstr "shū rù bì xū shì mì jí de ndarray"
|
||||||
|
|
||||||
#: extmod/ulab/code/ulab_create.c
|
#: extmod/ulab/code/ulab_create.c
|
||||||
msgid "input must be a tensor of rank 2"
|
msgid "input must be a tensor of rank 2"
|
||||||
msgstr ""
|
msgstr "shū rù bì xū shì děng jí 2 de zhāng liàng"
|
||||||
|
|
||||||
#: extmod/ulab/code/ulab_create.c extmod/ulab/code/user/user.c
|
#: extmod/ulab/code/ulab_create.c extmod/ulab/code/user/user.c
|
||||||
msgid "input must be an ndarray"
|
msgid "input must be an ndarray"
|
||||||
msgstr ""
|
msgstr "shū rù bì xū shì ndarray"
|
||||||
|
|
||||||
#: extmod/ulab/code/filter/filter.c
|
#: extmod/ulab/code/filter/filter.c
|
||||||
msgid "input must be one-dimensional"
|
msgid "input must be one-dimensional"
|
||||||
msgstr ""
|
msgstr "shū rù bì xū shì yì wéi de"
|
||||||
|
|
||||||
#: extmod/ulab/code/linalg/linalg.c
|
#: extmod/ulab/code/linalg/linalg.c
|
||||||
msgid "input must be square matrix"
|
msgid "input must be square matrix"
|
||||||
@ -2982,7 +3019,7 @@ msgstr "shūrù xiàngliàng de chángdù bìxū xiāngděng"
|
|||||||
|
|
||||||
#: extmod/ulab/code/poly/poly.c
|
#: extmod/ulab/code/poly/poly.c
|
||||||
msgid "inputs are not iterable"
|
msgid "inputs are not iterable"
|
||||||
msgstr ""
|
msgstr "shū rù bù kě yí dòng"
|
||||||
|
|
||||||
#: py/parsenum.c
|
#: py/parsenum.c
|
||||||
msgid "int() arg 2 must be >= 2 and <= 36"
|
msgid "int() arg 2 must be >= 2 and <= 36"
|
||||||
@ -3056,7 +3093,7 @@ msgstr "wúxiào de hàomǎ yǔfǎ"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
|
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
|
||||||
msgid "io must be rtc io"
|
msgid "io must be rtc io"
|
||||||
msgstr ""
|
msgstr "IO bì xū shì RTC IO"
|
||||||
|
|
||||||
#: py/objtype.c
|
#: py/objtype.c
|
||||||
msgid "issubclass() arg 1 must be a class"
|
msgid "issubclass() arg 1 must be a class"
|
||||||
@ -3155,11 +3192,11 @@ msgstr "Dāng gùdìng chángdù wèi %s shí, zuìdà chángdù bìxū wèi 0-%
|
|||||||
|
|
||||||
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
|
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
|
||||||
msgid "max_length must be >= 0"
|
msgid "max_length must be >= 0"
|
||||||
msgstr ""
|
msgstr "zuì dà cháng dù bì xū >= 0"
|
||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "maximum number of dimensions is 4"
|
msgid "maximum number of dimensions is 4"
|
||||||
msgstr ""
|
msgstr "zuì dà chǐ cùn shù wéi 4"
|
||||||
|
|
||||||
#: py/runtime.c
|
#: py/runtime.c
|
||||||
msgid "maximum recursion depth exceeded"
|
msgid "maximum recursion depth exceeded"
|
||||||
@ -3175,7 +3212,7 @@ msgstr "maxiter yìng wéi > 0"
|
|||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "median argument must be an ndarray"
|
msgid "median argument must be an ndarray"
|
||||||
msgstr ""
|
msgstr "zhōng wèi shù cān shù bì xū shì ndarray"
|
||||||
|
|
||||||
#: py/runtime.c
|
#: py/runtime.c
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -3261,7 +3298,7 @@ msgstr "zhǎo bù dào fēi běndì de bǎng dìng"
|
|||||||
|
|
||||||
#: shared-module/msgpack/__init__.c
|
#: shared-module/msgpack/__init__.c
|
||||||
msgid "no default packer"
|
msgid "no default packer"
|
||||||
msgstr ""
|
msgstr "wú mò rèn bāo zhuāng jī"
|
||||||
|
|
||||||
#: py/builtinimport.c
|
#: py/builtinimport.c
|
||||||
msgid "no module named '%q'"
|
msgid "no module named '%q'"
|
||||||
@ -3302,15 +3339,15 @@ msgstr "guānjiàn zì cānshù zhīhòu de fēi guānjiàn zì cānshù"
|
|||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/Adapter.c
|
#: ports/nrf/common-hal/_bleio/Adapter.c
|
||||||
msgid "non-zero timeout must be > 0.01"
|
msgid "non-zero timeout must be > 0.01"
|
||||||
msgstr ""
|
msgstr "fēi líng chāo shí bì xū > 0.01"
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "non-zero timeout must be >= interval"
|
msgid "non-zero timeout must be >= interval"
|
||||||
msgstr ""
|
msgstr "fēi líng chāo shí bì xū wéi >= jiàn gé"
|
||||||
|
|
||||||
#: extmod/ulab/code/linalg/linalg.c
|
#: extmod/ulab/code/linalg/linalg.c
|
||||||
msgid "norm is defined for 1D and 2D arrays"
|
msgid "norm is defined for 1D and 2D arrays"
|
||||||
msgstr ""
|
msgstr "wéi 1D hé 2D shù zǔ dìng yì guī fàn"
|
||||||
|
|
||||||
#: shared-bindings/_bleio/UUID.c
|
#: shared-bindings/_bleio/UUID.c
|
||||||
msgid "not a 128-bit UUID"
|
msgid "not a 128-bit UUID"
|
||||||
@ -3328,6 +3365,10 @@ msgstr "géshì zìfú chuàn cān shǔ bùzú"
|
|||||||
msgid "number of points must be at least 2"
|
msgid "number of points must be at least 2"
|
||||||
msgstr "diǎnshù bìxū zhìshǎo wèi 2"
|
msgstr "diǎnshù bìxū zhìshǎo wèi 2"
|
||||||
|
|
||||||
|
#: py/builtinhelp.c
|
||||||
|
msgid "object "
|
||||||
|
msgstr "duì xiàng "
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "object '%q' is not a tuple or list"
|
msgid "object '%q' is not a tuple or list"
|
||||||
msgstr "duìxiàng '%q' bùshì yuán zǔ huò lièbiǎo"
|
msgstr "duìxiàng '%q' bùshì yuán zǔ huò lièbiǎo"
|
||||||
@ -3378,11 +3419,15 @@ msgstr "jīshù zìfú chuàn"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ulab_create.c
|
#: extmod/ulab/code/ulab_create.c
|
||||||
msgid "offset is too large"
|
msgid "offset is too large"
|
||||||
msgstr ""
|
msgstr "piān yí tài dà"
|
||||||
|
|
||||||
#: shared-bindings/dualbank/__init__.c
|
#: shared-bindings/dualbank/__init__.c
|
||||||
msgid "offset must be >= 0"
|
msgid "offset must be >= 0"
|
||||||
msgstr ""
|
msgstr "piān yí liàng bì xū >= 0"
|
||||||
|
|
||||||
|
#: extmod/ulab/code/ulab_create.c
|
||||||
|
msgid "offset must be non-negative and no greater than buffer length"
|
||||||
|
msgstr "piān yí liàng bì xū wéi fēi fù shù qiě bù dà yú huǎn chōng qū cháng dù"
|
||||||
|
|
||||||
#: py/objstr.c py/objstrunicode.c
|
#: py/objstr.c py/objstrunicode.c
|
||||||
msgid "offset out of bounds"
|
msgid "offset out of bounds"
|
||||||
@ -3408,7 +3453,7 @@ msgstr "cāozuò shǔ bùnéng yīqǐ guǎngbò"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "operation is implemented for 1D Boolean arrays only"
|
msgid "operation is implemented for 1D Boolean arrays only"
|
||||||
msgstr ""
|
msgstr "jǐn duì 1D bù ěr shù zǔ shí xiàn cāo zuò"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "operation is not implemented on ndarrays"
|
msgid "operation is not implemented on ndarrays"
|
||||||
@ -3548,7 +3593,7 @@ msgstr "qǐngqiú chángdù %d dàn duìxiàng chángdù %d"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray_operators.c
|
#: extmod/ulab/code/ndarray_operators.c
|
||||||
msgid "results cannot be cast to specified type"
|
msgid "results cannot be cast to specified type"
|
||||||
msgstr ""
|
msgstr "wú fǎ jiāng jié guǒ qiáng zhì zhuǎn huàn dào zhǐ dìng lèi xíng"
|
||||||
|
|
||||||
#: py/compile.c
|
#: py/compile.c
|
||||||
msgid "return annotation must be an identifier"
|
msgid "return annotation must be an identifier"
|
||||||
@ -3570,7 +3615,7 @@ msgstr "rgb_pins[%d] yǔ shízhōng bùzài tóng yīgè duānkǒu shàng"
|
|||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "roll argument must be an ndarray"
|
msgid "roll argument must be an ndarray"
|
||||||
msgstr ""
|
msgstr "gǔn dòng cān shù bì xū shì ndarray"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "rsplit(None,n)"
|
msgid "rsplit(None,n)"
|
||||||
@ -3598,11 +3643,11 @@ msgstr "bù zhīchí jiǎoběn biānyì"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "shape must be a tuple"
|
msgid "shape must be a tuple"
|
||||||
msgstr ""
|
msgstr "xíng zhuàng bì xū shì yí gè yuán zǔ"
|
||||||
|
|
||||||
#: shared-module/msgpack/__init__.c
|
#: shared-module/msgpack/__init__.c
|
||||||
msgid "short read"
|
msgid "short read"
|
||||||
msgstr ""
|
msgstr "duǎn dú"
|
||||||
|
|
||||||
#: py/objstr.c
|
#: py/objstr.c
|
||||||
msgid "sign not allowed in string format specifier"
|
msgid "sign not allowed in string format specifier"
|
||||||
@ -3735,7 +3780,7 @@ msgstr "Chāo shí shíjiān bìxū wèi 0.0 Dào 100.0 Miǎo"
|
|||||||
|
|
||||||
#: ports/nrf/common-hal/_bleio/Adapter.c
|
#: ports/nrf/common-hal/_bleio/Adapter.c
|
||||||
msgid "timeout must be < 655.35 secs"
|
msgid "timeout must be < 655.35 secs"
|
||||||
msgstr ""
|
msgstr "chāo shí bì xū < 655.35 miǎo"
|
||||||
|
|
||||||
#: shared-bindings/_bleio/CharacteristicBuffer.c
|
#: shared-bindings/_bleio/CharacteristicBuffer.c
|
||||||
msgid "timeout must be >= 0.0"
|
msgid "timeout must be >= 0.0"
|
||||||
@ -3755,7 +3800,7 @@ msgstr "time_t shíjiān chuō chāochū píngtái fànwéi"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "tobytes can be invoked for dense arrays only"
|
msgid "tobytes can be invoked for dense arrays only"
|
||||||
msgstr ""
|
msgstr "tobytes zhǐ néng duì mì jí shù zǔ diào yòng"
|
||||||
|
|
||||||
#: shared-module/struct/__init__.c
|
#: shared-module/struct/__init__.c
|
||||||
msgid "too many arguments provided with the given format"
|
msgid "too many arguments provided with the given format"
|
||||||
@ -3763,7 +3808,7 @@ msgstr "tígōng jǐ dìng géshì de cānshù tài duō"
|
|||||||
|
|
||||||
#: extmod/ulab/code/ulab_create.c
|
#: extmod/ulab/code/ulab_create.c
|
||||||
msgid "too many dimensions"
|
msgid "too many dimensions"
|
||||||
msgstr ""
|
msgstr "chǐ cùn tài duō"
|
||||||
|
|
||||||
#: extmod/ulab/code/ndarray.c
|
#: extmod/ulab/code/ndarray.c
|
||||||
msgid "too many indices"
|
msgid "too many indices"
|
||||||
@ -3776,7 +3821,7 @@ msgstr "dǎkāi tài duō zhí (yùqí %d)"
|
|||||||
|
|
||||||
#: extmod/ulab/code/approx/approx.c
|
#: extmod/ulab/code/approx/approx.c
|
||||||
msgid "trapz is defined for 1D arrays"
|
msgid "trapz is defined for 1D arrays"
|
||||||
msgstr ""
|
msgstr "wéi 1D shù zǔ dìng yì xiàn jǐng"
|
||||||
|
|
||||||
#: extmod/ulab/code/approx/approx.c
|
#: extmod/ulab/code/approx/approx.c
|
||||||
msgid "trapz is defined for 1D arrays of equal length"
|
msgid "trapz is defined for 1D arrays of equal length"
|
||||||
@ -3784,7 +3829,7 @@ msgstr "Trapz shì wèi děng zhǎng de 1D shùzǔ dìngyì de"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
|
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
|
||||||
msgid "trigger level must be 0 or 1"
|
msgid "trigger level must be 0 or 1"
|
||||||
msgstr ""
|
msgstr "chù fā jí bié bì xū wéi 0 huò 1"
|
||||||
|
|
||||||
#: py/obj.c
|
#: py/obj.c
|
||||||
msgid "tuple/list has wrong length"
|
msgid "tuple/list has wrong length"
|
||||||
@ -3926,7 +3971,7 @@ msgstr "xiàngliàng bìxū jùyǒu xiāngtóng de chángdù"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
|
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
|
||||||
msgid "wakeup conflict"
|
msgid "wakeup conflict"
|
||||||
msgstr ""
|
msgstr "huàn xǐng chōng tū"
|
||||||
|
|
||||||
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
|
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
|
||||||
msgid "watchdog not initialized"
|
msgid "watchdog not initialized"
|
||||||
@ -3940,17 +3985,21 @@ msgstr "kān mén gǒu chāoshí bìxū dàyú 0"
|
|||||||
msgid "width must be greater than zero"
|
msgid "width must be greater than zero"
|
||||||
msgstr "kuāndù bìxū dàyú líng"
|
msgstr "kuāndù bìxū dàyú líng"
|
||||||
|
|
||||||
|
#: ports/esp32s2/common-hal/wifi/Radio.c
|
||||||
|
msgid "wifi is not enabled"
|
||||||
|
msgstr "wèi qǐ yòng WIFI"
|
||||||
|
|
||||||
#: shared-bindings/_bleio/Adapter.c
|
#: shared-bindings/_bleio/Adapter.c
|
||||||
msgid "window must be <= interval"
|
msgid "window must be <= interval"
|
||||||
msgstr "Chuāngkǒu bìxū shì <= jiàngé"
|
msgstr "Chuāngkǒu bìxū shì <= jiàngé"
|
||||||
|
|
||||||
#: extmod/ulab/code/numerical/numerical.c
|
#: extmod/ulab/code/numerical/numerical.c
|
||||||
msgid "wrong axis index"
|
msgid "wrong axis index"
|
||||||
msgstr ""
|
msgstr "cuò wù de zhóu suǒ yǐn"
|
||||||
|
|
||||||
#: extmod/ulab/code/ulab_create.c
|
#: extmod/ulab/code/ulab_create.c
|
||||||
msgid "wrong axis specified"
|
msgid "wrong axis specified"
|
||||||
msgstr ""
|
msgstr "zhǐ dìng de zhóu cuò wù"
|
||||||
|
|
||||||
#: extmod/ulab/code/vector/vectorise.c
|
#: extmod/ulab/code/vector/vectorise.c
|
||||||
msgid "wrong input type"
|
msgid "wrong input type"
|
||||||
@ -3978,7 +4027,7 @@ msgstr "x zhí chāochū biānjiè"
|
|||||||
|
|
||||||
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
#: ports/esp32s2/common-hal/audiobusio/__init__.c
|
||||||
msgid "xTaskCreate failed"
|
msgid "xTaskCreate failed"
|
||||||
msgstr ""
|
msgstr "xTaskCreate shī bài"
|
||||||
|
|
||||||
#: shared-bindings/displayio/Shape.c
|
#: shared-bindings/displayio/Shape.c
|
||||||
msgid "y should be an int"
|
msgid "y should be an int"
|
||||||
@ -4004,6 +4053,9 @@ msgstr "zi bìxū wèi fú diǎn xíng"
|
|||||||
msgid "zi must be of shape (n_section, 2)"
|
msgid "zi must be of shape (n_section, 2)"
|
||||||
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
|
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
|
||||||
|
|
||||||
|
#~ msgid "Unknown failure"
|
||||||
|
#~ msgstr "Wèizhī gùzhàng"
|
||||||
|
|
||||||
#~ msgid "input argument must be an integer or a 2-tuple"
|
#~ msgid "input argument must be an integer or a 2-tuple"
|
||||||
#~ msgstr "shūrù cānshù bìxū shì zhěngshù huò 2 yuán zǔ"
|
#~ msgstr "shūrù cānshù bìxū shì zhěngshù huò 2 yuán zǔ"
|
||||||
|
|
||||||
|
9
main.c
9
main.c
@ -317,7 +317,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
|
|||||||
|
|
||||||
// Program has finished running.
|
// Program has finished running.
|
||||||
|
|
||||||
bool serial_connected_before_animation = serial_connected();
|
bool printed_press_any_key = false;
|
||||||
#if CIRCUITPY_DISPLAYIO
|
#if CIRCUITPY_DISPLAYIO
|
||||||
bool refreshed_epaper_display = false;
|
bool refreshed_epaper_display = false;
|
||||||
#endif
|
#endif
|
||||||
@ -364,7 +364,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!serial_connected_before_animation && serial_connected()) {
|
if (!printed_press_any_key && serial_connected()) {
|
||||||
if (!serial_connected_at_start) {
|
if (!serial_connected_at_start) {
|
||||||
print_code_py_status_message(safe_mode);
|
print_code_py_status_message(safe_mode);
|
||||||
}
|
}
|
||||||
@ -372,11 +372,12 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
|
|||||||
print_safe_mode_message(safe_mode);
|
print_safe_mode_message(safe_mode);
|
||||||
serial_write("\n");
|
serial_write("\n");
|
||||||
serial_write_compressed(translate("Press any key to enter the REPL. Use CTRL-D to reload.\n"));
|
serial_write_compressed(translate("Press any key to enter the REPL. Use CTRL-D to reload.\n"));
|
||||||
|
printed_press_any_key = true;
|
||||||
}
|
}
|
||||||
if (serial_connected_before_animation && !serial_connected()) {
|
if (!serial_connected()) {
|
||||||
serial_connected_at_start = false;
|
serial_connected_at_start = false;
|
||||||
|
printed_press_any_key = false;
|
||||||
}
|
}
|
||||||
serial_connected_before_animation = serial_connected();
|
|
||||||
|
|
||||||
// Refresh the ePaper display if we have one. That way it'll show an error message.
|
// Refresh the ePaper display if we have one. That way it'll show an error message.
|
||||||
#if CIRCUITPY_DISPLAYIO
|
#if CIRCUITPY_DISPLAYIO
|
||||||
|
@ -22,7 +22,6 @@ CIRCUITPY_GAMEPAD = 1
|
|||||||
CIRCUITPY_BUSDEVICE = 1
|
CIRCUITPY_BUSDEVICE = 1
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
||||||
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ADXL34x
|
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ADXL34x
|
||||||
|
@ -10,3 +10,4 @@ INTERNAL_FLASH_FILESYSTEM = 1
|
|||||||
LONGINT_IMPL = NONE
|
LONGINT_IMPL = NONE
|
||||||
CIRCUITPY_FULL_BUILD = 0
|
CIRCUITPY_FULL_BUILD = 0
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
SUPEROPT_VM = 0
|
||||||
|
@ -11,3 +11,5 @@ LONGINT_IMPL = NONE
|
|||||||
CIRCUITPY_FULL_BUILD = 0
|
CIRCUITPY_FULL_BUILD = 0
|
||||||
|
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
SUPEROPT_VM = 0
|
||||||
|
CFLAGS_INLINE_LIMIT = 40
|
||||||
|
@ -16,6 +16,7 @@ CIRCUITPY_COUNTIO = 0
|
|||||||
CIRCUITPY_FREQUENCYIO = 0
|
CIRCUITPY_FREQUENCYIO = 0
|
||||||
CIRCUITPY_I2CPERIPHERAL = 0
|
CIRCUITPY_I2CPERIPHERAL = 0
|
||||||
CIRCUITPY_VECTORIO = 0
|
CIRCUITPY_VECTORIO = 0
|
||||||
|
CIRCUITPY_BUSDEVICE = 0
|
||||||
MICROPY_PY_ASYNC_AWAIT = 0
|
MICROPY_PY_ASYNC_AWAIT = 0
|
||||||
|
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
@ -22,7 +22,6 @@ SUPEROPT_GC = 0
|
|||||||
CFLAGS_INLINE_LIMIT = 55
|
CFLAGS_INLINE_LIMIT = 55
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
|
||||||
|
@ -22,11 +22,10 @@ CIRCUITPY_ROTARYIO = 0
|
|||||||
CIRCUITPY_RTC = 0
|
CIRCUITPY_RTC = 0
|
||||||
|
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
CFLAGS_INLINE_LIMIT = 50
|
CFLAGS_INLINE_LIMIT = 40
|
||||||
|
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Crickit
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Crickit
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
|
||||||
|
@ -43,5 +43,3 @@
|
|||||||
// USB is always used internally so skip the pin objects for it.
|
// USB is always used internally so skip the pin objects for it.
|
||||||
#define IGNORE_PIN_PA24 1
|
#define IGNORE_PIN_PA24 1
|
||||||
#define IGNORE_PIN_PA25 1
|
#define IGNORE_PIN_PA25 1
|
||||||
|
|
||||||
#define MICROPY_PY_URE 0
|
|
||||||
|
@ -18,6 +18,7 @@ CIRCUITPY_FREQUENCYIO = 0
|
|||||||
CIRCUITPY_I2CPERIPHERAL = 0
|
CIRCUITPY_I2CPERIPHERAL = 0
|
||||||
CIRCUITPY_MSGPACK = 0
|
CIRCUITPY_MSGPACK = 0
|
||||||
CIRCUITPY_PIXELBUF = 0
|
CIRCUITPY_PIXELBUF = 0
|
||||||
|
CIRCUITPY_RE = 0
|
||||||
CIRCUITPY_ROTARYIO = 0
|
CIRCUITPY_ROTARYIO = 0
|
||||||
CIRCUITPY_RTC = 0
|
CIRCUITPY_RTC = 0
|
||||||
# So not all of displayio, sorry!
|
# So not all of displayio, sorry!
|
||||||
@ -27,7 +28,6 @@ SUPEROPT_GC = 0
|
|||||||
CFLAGS_INLINE_LIMIT = 55
|
CFLAGS_INLINE_LIMIT = 55
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_CircuitPlayground
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
|
@ -11,3 +11,4 @@ LONGINT_IMPL = NONE
|
|||||||
CIRCUITPY_FULL_BUILD = 0
|
CIRCUITPY_FULL_BUILD = 0
|
||||||
|
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
SUPEROPT_VM = 0
|
||||||
|
@ -21,7 +21,6 @@ CFLAGS_INLINE_LIMIT = 50
|
|||||||
CIRCUITPY_MSGPACK = 0
|
CIRCUITPY_MSGPACK = 0
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Crickit
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Crickit
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Motor
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Motor
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
|
@ -28,5 +28,4 @@ CFLAGS_INLINE_LIMIT = 35
|
|||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_RFM69
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_RFM69
|
||||||
|
@ -29,5 +29,4 @@ CFLAGS_INLINE_LIMIT = 35
|
|||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_RFM9x
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_RFM9x
|
||||||
|
@ -20,4 +20,5 @@ endif
|
|||||||
ifeq ($(TRANSLATION), de_DE)
|
ifeq ($(TRANSLATION), de_DE)
|
||||||
RELEASE_NEEDS_CLEAN_BUILD = 1
|
RELEASE_NEEDS_CLEAN_BUILD = 1
|
||||||
CFLAGS_INLINE_LIMIT = 35
|
CFLAGS_INLINE_LIMIT = 35
|
||||||
|
SUPEROPT_VM = 0
|
||||||
endif
|
endif
|
||||||
|
@ -27,7 +27,6 @@ CFLAGS_INLINE_LIMIT = 55
|
|||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_LIS3DH
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
// These are pins not to reset.
|
// These are pins not to reset.
|
||||||
// QSPI Data pins
|
// QSPI Data pins
|
||||||
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
|
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
|
||||||
// DotStar pins, QSPI CS, and QSPI SCK
|
// DotStar SCK, DotStar MOSI, QSPI SCK, and QSPI CS
|
||||||
#define MICROPY_PORT_B (PORT_PB02 | PORT_PB03 | PORT_PB10 | PORT_PB11)
|
#define MICROPY_PORT_B (PORT_PB02 | PORT_PB03 | PORT_PB10 | PORT_PB11)
|
||||||
#define MICROPY_PORT_C (0)
|
#define MICROPY_PORT_C (0)
|
||||||
#define MICROPY_PORT_D (0)
|
#define MICROPY_PORT_D (0)
|
||||||
|
@ -10,3 +10,5 @@ QSPI_FLASH_FILESYSTEM = 1
|
|||||||
EXTERNAL_FLASH_DEVICE_COUNT = 3
|
EXTERNAL_FLASH_DEVICE_COUNT = 3
|
||||||
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"
|
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
CIRCUITPY__EVE = 1
|
||||||
|
@ -21,7 +21,6 @@ CIRCUITPY_GAMEPAD = 0
|
|||||||
CIRCUITPY_RGBMATRIX = 0
|
CIRCUITPY_RGBMATRIX = 0
|
||||||
CIRCUITPY_PS2IO = 0
|
CIRCUITPY_PS2IO = 0
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
||||||
|
@ -21,7 +21,6 @@ CIRCUITPY_GAMEPAD = 0
|
|||||||
CIRCUITPY_RGBMATRIX = 0
|
CIRCUITPY_RGBMATRIX = 0
|
||||||
CIRCUITPY_PS2IO = 0
|
CIRCUITPY_PS2IO = 0
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
||||||
|
@ -11,14 +11,6 @@ LONGINT_IMPL = NONE
|
|||||||
CIRCUITPY_FULL_BUILD = 0
|
CIRCUITPY_FULL_BUILD = 0
|
||||||
|
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
SUPEROPT_VM = 0
|
||||||
|
|
||||||
CFLAGS_BOARD = --param max-inline-insns-auto=15
|
CFLAGS_BOARD = --param max-inline-insns-auto=15
|
||||||
ifeq ($(TRANSLATION), zh_Latn_pinyin)
|
|
||||||
RELEASE_NEEDS_CLEAN_BUILD = 1
|
|
||||||
CFLAGS_INLINE_LIMIT = 35
|
|
||||||
endif
|
|
||||||
ifeq ($(TRANSLATION), de_DE)
|
|
||||||
RELEASE_NEEDS_CLEAN_BUILD = 1
|
|
||||||
CFLAGS_INLINE_LIMIT = 35
|
|
||||||
SUPEROPT_VM = 0
|
|
||||||
endif
|
|
||||||
|
@ -13,5 +13,4 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
CIRCUITPY_USTACK = 1
|
CIRCUITPY_USTACK = 1
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
|
@ -14,6 +14,7 @@ LONGINT_IMPL = NONE
|
|||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
CIRCUITPY_FREQUENCYIO = 0
|
CIRCUITPY_FREQUENCYIO = 0
|
||||||
CIRCUITPY_GAMEPAD = 0
|
CIRCUITPY_GAMEPAD = 0
|
||||||
|
CIRCUITPY_BUSDEVICE = 0
|
||||||
|
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_AUDIOIO = 0
|
CIRCUITPY_AUDIOIO = 0
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
CIRCUITPY_VECTORIO = 0
|
CIRCUITPY_VECTORIO = 0
|
||||||
|
CIRCUITPY_BUSDEVICE = 0
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DotStar
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DotStar
|
||||||
|
|
||||||
|
@ -10,4 +10,10 @@ INTERNAL_FLASH_FILESYSTEM = 1
|
|||||||
LONGINT_IMPL = NONE
|
LONGINT_IMPL = NONE
|
||||||
CIRCUITPY_FULL_BUILD = 0
|
CIRCUITPY_FULL_BUILD = 0
|
||||||
|
|
||||||
|
ifeq ($(TRANSLATION),de_DE)
|
||||||
|
RELEASE_NEEDS_CLEAN_BUILD = 1
|
||||||
|
CFLAGS_INLINE_LIMIT = 35
|
||||||
|
SUPEROPT_VM = 0
|
||||||
|
endif
|
||||||
|
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
@ -28,6 +28,7 @@ CIRCUITPY_RTC = 0
|
|||||||
CIRCUITPY_TOUCHIO = 0
|
CIRCUITPY_TOUCHIO = 0
|
||||||
CIRCUITPY_USB_HID = 0
|
CIRCUITPY_USB_HID = 0
|
||||||
CIRCUITPY_USB_MIDI = 0
|
CIRCUITPY_USB_MIDI = 0
|
||||||
|
CIRCUITPY_BUSDEVICE = 0
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/ugame10
|
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/ugame10
|
||||||
|
|
||||||
|
@ -24,4 +24,3 @@ CIRCUITPY_TOUCHIO=0
|
|||||||
CIRCUITPY_BUSDEVICE=1
|
CIRCUITPY_BUSDEVICE=1
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
|
@ -27,5 +27,4 @@ CIRCUITPY_COUNTIO=0
|
|||||||
CIRCUITPY_BUSDEVICE=1
|
CIRCUITPY_BUSDEVICE=1
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
||||||
|
@ -45,11 +45,7 @@
|
|||||||
#define MICROPY_PY_BUILTINS_COMPLEX (0)
|
#define MICROPY_PY_BUILTINS_COMPLEX (0)
|
||||||
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
|
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
|
||||||
#define MICROPY_PY_FUNCTION_ATTRS (0)
|
#define MICROPY_PY_FUNCTION_ATTRS (0)
|
||||||
// MICROPY_PY_UJSON depends on MICROPY_PY_IO
|
|
||||||
#define MICROPY_PY_IO (0)
|
|
||||||
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (0)
|
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (0)
|
||||||
#define MICROPY_PY_UBINASCII (0)
|
|
||||||
#define MICROPY_PY_UJSON (0)
|
|
||||||
#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (0)
|
#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (0)
|
||||||
#define MICROPY_PY_UERRNO_LIST \
|
#define MICROPY_PY_UERRNO_LIST \
|
||||||
X(EPERM) \
|
X(EPERM) \
|
||||||
@ -84,9 +80,6 @@
|
|||||||
#define SPI_FLASH_MAX_BAUDRATE 24000000
|
#define SPI_FLASH_MAX_BAUDRATE 24000000
|
||||||
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1)
|
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1)
|
||||||
#define MICROPY_PY_FUNCTION_ATTRS (1)
|
#define MICROPY_PY_FUNCTION_ATTRS (1)
|
||||||
// MICROPY_PY_UJSON depends on MICROPY_PY_IO
|
|
||||||
#define MICROPY_PY_IO (1)
|
|
||||||
#define MICROPY_PY_UJSON (1)
|
|
||||||
// MICROPY_PY_UERRNO_LIST - Use the default
|
// MICROPY_PY_UERRNO_LIST - Use the default
|
||||||
|
|
||||||
#endif // SAM_D5X_E5X
|
#endif // SAM_D5X_E5X
|
||||||
|
@ -20,26 +20,16 @@ endif
|
|||||||
|
|
||||||
# Put samd21-only choices here.
|
# Put samd21-only choices here.
|
||||||
ifeq ($(CHIP_FAMILY),samd21)
|
ifeq ($(CHIP_FAMILY),samd21)
|
||||||
# frequencyio not yet verified as working on SAMD21, though make it possible to override.
|
|
||||||
ifndef CIRCUITPY_AUDIOMIXER
|
|
||||||
CIRCUITPY_AUDIOMIXER = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef CIRCUITPY_AUDIOMP3
|
# The ?='s allow overriding in mpconfigboard.mk.
|
||||||
CIRCUITPY_AUDIOMP3 = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef CIRCUITPY_BUILTINS_POW3
|
CIRCUITPY_AUDIOMIXER ?= 0
|
||||||
CIRCUITPY_BUILTINS_POW3 = 0
|
CIRCUITPY_BINASCII ?= 0
|
||||||
endif
|
CIRCUITPY_AUDIOMP3 ?= 0
|
||||||
|
CIRCUITPY_BUILTINS_POW3 ?= 0
|
||||||
ifndef CIRCUITPY_FREQUENCYIO
|
CIRCUITPY_FREQUENCYIO ?= 0
|
||||||
CIRCUITPY_FREQUENCYIO = 0
|
CIRCUITPY_JSON ?= 0
|
||||||
endif
|
CIRCUITPY_TOUCHIO_USE_NATIVE ?= 1
|
||||||
|
|
||||||
ifndef CIRCUITPY_TOUCHIO_USE_NATIVE
|
|
||||||
CIRCUITPY_TOUCHIO_USE_NATIVE = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
# No room for HCI _bleio on SAMD21.
|
# No room for HCI _bleio on SAMD21.
|
||||||
CIRCUITPY_BLEIO_HCI = 0
|
CIRCUITPY_BLEIO_HCI = 0
|
||||||
@ -71,27 +61,13 @@ ifeq ($(CHIP_FAMILY),samd51)
|
|||||||
# No native touchio on SAMD51.
|
# No native touchio on SAMD51.
|
||||||
CIRCUITPY_TOUCHIO_USE_NATIVE = 0
|
CIRCUITPY_TOUCHIO_USE_NATIVE = 0
|
||||||
|
|
||||||
# The ifndef's allow overriding in mpconfigboard.mk.
|
# The ?='s allow overriding in mpconfigboard.mk.
|
||||||
|
|
||||||
ifndef CIRCUITPY_NETWORK
|
CIRCUITPY_NETWORK ?= 0
|
||||||
CIRCUITPY_NETWORK = 0
|
CIRCUITPY_PS2IO ?= 1
|
||||||
endif
|
CIRCUITPY_SAMD ?= 1
|
||||||
|
CIRCUITPY_RGBMATRIX ?= $(CIRCUITPY_FULL_BUILD)
|
||||||
ifndef CIRCUITPY_PS2IO
|
CIRCUITPY_FRAMEBUFFERIO ?= $(CIRCUITPY_FULL_BUILD)
|
||||||
CIRCUITPY_PS2IO = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef CIRCUITPY_SAMD
|
|
||||||
CIRCUITPY_SAMD = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef CIRCUITPY_RGBMATRIX
|
|
||||||
CIRCUITPY_RGBMATRIX = $(CIRCUITPY_FULL_BUILD)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef CIRCUITPY_FRAMEBUFFERIO
|
|
||||||
CIRCUITPY_FRAMEBUFFERIO = $(CIRCUITPY_FULL_BUILD)
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif # samd51
|
endif # samd51
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ Bootloader information:
|
|||||||
|
|
||||||
* You have to accept the End User License Agreement to be able to download and use the Spresense bootloader binary.
|
* You have to accept the End User License Agreement to be able to download and use the Spresense bootloader binary.
|
||||||
|
|
||||||
Download the spresense binaries zip archive from: [Spresense firmware v2-0-000](https://developer.sony.com/file/download/download-spresense-firmware-v2-0-000)
|
Download the spresense binaries zip archive from: [Spresense firmware v2-0-002](https://developer.sony.com/file/download/download-spresense-firmware-v2-0-002)
|
||||||
|
|
||||||
Extract spresense binaries in your PC to ports/spresense/spresense-exported-sdk/firmware/
|
Extract spresense binaries in your PC to ports/spresense/spresense-exported-sdk/firmware/
|
||||||
|
|
||||||
|
@ -165,6 +165,7 @@ CONFIG_USBDEV=y
|
|||||||
CONFIG_USBDEV_DMA=y
|
CONFIG_USBDEV_DMA=y
|
||||||
CONFIG_USBDEV_DUALSPEED=y
|
CONFIG_USBDEV_DUALSPEED=y
|
||||||
CONFIG_USEC_PER_TICK=1000
|
CONFIG_USEC_PER_TICK=1000
|
||||||
|
CONFIG_USERMAIN_STACKSIZE=8192
|
||||||
CONFIG_USER_ENTRYPOINT="spresense_main"
|
CONFIG_USER_ENTRYPOINT="spresense_main"
|
||||||
CONFIG_VIDEO_ISX012=y
|
CONFIG_VIDEO_ISX012=y
|
||||||
CONFIG_VIDEO_STREAM=y
|
CONFIG_VIDEO_STREAM=y
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 752c4cd56dd0a270a559c28272ceb61ddcb7806c
|
Subproject commit 2ec2a1538362696118dc3fdf56f33dacaf8f4067
|
@ -30,10 +30,10 @@
|
|||||||
|
|
||||||
/* Prototypes for Remote API */
|
/* Prototypes for Remote API */
|
||||||
|
|
||||||
int FM_RawWrite(uint32_t offset, const void *buf, uint32_t size);
|
int fw_fm_rawwrite(uint32_t offset, const void *buf, uint32_t size);
|
||||||
int FM_RawVerifyWrite(uint32_t offset, const void *buf, uint32_t size);
|
int fw_fm_rawverifywrite(uint32_t offset, const void *buf, uint32_t size);
|
||||||
int FM_RawRead(uint32_t offset, void *buf, uint32_t size);
|
int fw_fm_rawread(uint32_t offset, void *buf, uint32_t size);
|
||||||
int FM_RawEraseSector(uint32_t sector);
|
int fw_fm_rawerasesector(uint32_t sector);
|
||||||
|
|
||||||
#define CXD56_SPIFLASHSIZE (16 * 1024 * 1024)
|
#define CXD56_SPIFLASHSIZE (16 * 1024 * 1024)
|
||||||
|
|
||||||
@ -64,8 +64,8 @@ void port_internal_flash_flush(void) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FM_RawEraseSector(flash_sector);
|
fw_fm_rawerasesector(flash_sector);
|
||||||
FM_RawWrite(flash_sector << SECTOR_SHIFT, flash_cache, SECTOR_SIZE);
|
fw_fm_rawwrite(flash_sector << SECTOR_SHIFT, flash_cache, SECTOR_SIZE);
|
||||||
|
|
||||||
flash_sector = NO_SECTOR;
|
flash_sector = NO_SECTOR;
|
||||||
}
|
}
|
||||||
@ -73,7 +73,7 @@ void port_internal_flash_flush(void) {
|
|||||||
mp_uint_t supervisor_flash_read_blocks(uint8_t *dest, uint32_t block, uint32_t num_blocks) {
|
mp_uint_t supervisor_flash_read_blocks(uint8_t *dest, uint32_t block, uint32_t num_blocks) {
|
||||||
supervisor_flash_flush();
|
supervisor_flash_flush();
|
||||||
|
|
||||||
if (FM_RawRead(block << PAGE_SHIFT, dest, num_blocks << PAGE_SHIFT) < 0) {
|
if (fw_fm_rawread(block << PAGE_SHIFT, dest, num_blocks << PAGE_SHIFT) < 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ mp_uint_t supervisor_flash_write_blocks(const uint8_t *src, uint32_t lba, uint32
|
|||||||
if (sector != flash_sector) {
|
if (sector != flash_sector) {
|
||||||
supervisor_flash_flush();
|
supervisor_flash_flush();
|
||||||
|
|
||||||
if (FM_RawRead(sector << SECTOR_SHIFT, flash_cache, SECTOR_SIZE) < 0) {
|
if (fw_fm_rawread(sector << SECTOR_SHIFT, flash_cache, SECTOR_SIZE) < 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,35 +33,196 @@
|
|||||||
#include "shared-bindings/digitalio/DigitalInOut.h"
|
#include "shared-bindings/digitalio/DigitalInOut.h"
|
||||||
#include "shared-bindings/microcontroller/__init__.h"
|
#include "shared-bindings/microcontroller/__init__.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Current pin limitations for ESP32-S2 ParallelBus:
|
||||||
|
* - data0 pin must be byte aligned
|
||||||
|
*/
|
||||||
|
|
||||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
||||||
|
|
||||||
mp_raise_NotImplementedError(translate("ParallelBus not yet supported"));
|
uint8_t data_pin = data0->number;
|
||||||
|
if (data_pin % 8 != 0) {
|
||||||
|
mp_raise_ValueError(translate("Data 0 pin must be byte aligned."));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < 8; i++) {
|
||||||
|
if (!pin_number_is_free(data_pin + i)) {
|
||||||
|
mp_raise_ValueError_varg(translate("Bus pin %d is already in use"), i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gpio_dev_t *g = &GPIO; // this is the GPIO registers, see "extern gpio_dev_t GPIO" from file:gpio_struct.h
|
||||||
|
|
||||||
|
// Setup the pins as "Simple GPIO outputs" see section 19.3.3 of the ESP32-S2 Reference Manual
|
||||||
|
// Enable pins with "enable_w1ts"
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < 8; i++) {
|
||||||
|
g->enable_w1ts = (0x1 << (data_pin + i));
|
||||||
|
g->func_out_sel_cfg[data_pin + i].val= 256; /* setup output pin for simple GPIO Output, (0x100 = 256) */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* From my understanding, there is a limitation of the ESP32-S2 that does not allow single-byte writes
|
||||||
|
* into the GPIO registers. See section 10.3.3 regarding "non-aligned writes" into the registers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
if (data_pin < 31) {
|
||||||
|
self->bus = (uint32_t*) &g->out; //pointer to GPIO output register (for pins 0-31)
|
||||||
|
} else {
|
||||||
|
self->bus = (uint32_t*) &g->out1.val; //pointer to GPIO output register (for pins >= 32)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SNIP - common setup of command, chip select, write and read pins, same as from SAMD and NRF ports */
|
||||||
|
self->command.base.type = &digitalio_digitalinout_type;
|
||||||
|
common_hal_digitalio_digitalinout_construct(&self->command, command);
|
||||||
|
common_hal_digitalio_digitalinout_switch_to_output(&self->command, true, DRIVE_MODE_PUSH_PULL);
|
||||||
|
|
||||||
|
self->chip_select.base.type = &digitalio_digitalinout_type;
|
||||||
|
common_hal_digitalio_digitalinout_construct(&self->chip_select, chip_select);
|
||||||
|
common_hal_digitalio_digitalinout_switch_to_output(&self->chip_select, true, DRIVE_MODE_PUSH_PULL);
|
||||||
|
|
||||||
|
self->write.base.type = &digitalio_digitalinout_type;
|
||||||
|
common_hal_digitalio_digitalinout_construct(&self->write, write);
|
||||||
|
common_hal_digitalio_digitalinout_switch_to_output(&self->write, true, DRIVE_MODE_PUSH_PULL);
|
||||||
|
|
||||||
|
self->read.base.type = &digitalio_digitalinout_type;
|
||||||
|
common_hal_digitalio_digitalinout_construct(&self->read, read);
|
||||||
|
common_hal_digitalio_digitalinout_switch_to_output(&self->read, true, DRIVE_MODE_PUSH_PULL);
|
||||||
|
|
||||||
|
self->data0_pin = data_pin;
|
||||||
|
|
||||||
|
if (write->number < 32) {
|
||||||
|
self->write_clear_register = (uint32_t*) &g->out_w1tc;
|
||||||
|
self->write_set_register = (uint32_t*) &g->out_w1ts;
|
||||||
|
} else {
|
||||||
|
self->write_clear_register = (uint32_t*) &g->out1_w1tc.val;
|
||||||
|
self->write_set_register = (uint32_t*) &g->out1_w1ts.val;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check to see if the data and write pins are on the same register:
|
||||||
|
if ( ( ((self->data0_pin < 32) && (write->number < 32)) ) ||
|
||||||
|
( ((self->data0_pin > 31) && (write->number > 31)) ) ) {
|
||||||
|
self->data_write_same_register = true; // data pins and write pin are on the same register
|
||||||
|
} else {
|
||||||
|
self->data_write_same_register = false; // data pins and write pins are on different registers
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
self->write_mask = 1 << (write->number % 32); /* the write pin triggers the LCD to latch the data */
|
||||||
|
|
||||||
|
/* SNIP - common setup of the reset pin, same as from SAMD and NRF ports */
|
||||||
|
self->reset.base.type = &mp_type_NoneType;
|
||||||
|
if (reset != NULL) {
|
||||||
|
self->reset.base.type = &digitalio_digitalinout_type;
|
||||||
|
common_hal_digitalio_digitalinout_construct(&self->reset, reset);
|
||||||
|
common_hal_digitalio_digitalinout_switch_to_output(&self->reset, true, DRIVE_MODE_PUSH_PULL);
|
||||||
|
never_reset_pin_number(reset->number);
|
||||||
|
common_hal_displayio_parallelbus_reset(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
never_reset_pin_number(command->number);
|
||||||
|
never_reset_pin_number(chip_select->number);
|
||||||
|
never_reset_pin_number(write->number);
|
||||||
|
never_reset_pin_number(read->number);
|
||||||
|
for (uint8_t i = 0; i < 8; i++) {
|
||||||
|
never_reset_pin_number(data_pin + i);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_displayio_parallelbus_deinit(displayio_parallelbus_obj_t* self) {
|
void common_hal_displayio_parallelbus_deinit(displayio_parallelbus_obj_t* self) {
|
||||||
|
/* SNIP - same as from SAMD and NRF ports */
|
||||||
|
for (uint8_t i = 0; i < 8; i++) {
|
||||||
|
reset_pin_number(self->data0_pin + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
reset_pin_number(self->command.pin->number);
|
||||||
|
reset_pin_number(self->chip_select.pin->number);
|
||||||
|
reset_pin_number(self->write.pin->number);
|
||||||
|
reset_pin_number(self->read.pin->number);
|
||||||
|
reset_pin_number(self->reset.pin->number);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_displayio_parallelbus_reset(mp_obj_t obj) {
|
bool common_hal_displayio_parallelbus_reset(mp_obj_t obj) {
|
||||||
return false;
|
/* SNIP - same as from SAMD and NRF ports */
|
||||||
|
displayio_parallelbus_obj_t* self = MP_OBJ_TO_PTR(obj);
|
||||||
|
if (self->reset.base.type == &mp_type_NoneType) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
common_hal_digitalio_digitalinout_set_value(&self->reset, false);
|
||||||
|
common_hal_mcu_delay_us(4);
|
||||||
|
common_hal_digitalio_digitalinout_set_value(&self->reset, true);
|
||||||
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_displayio_parallelbus_bus_free(mp_obj_t obj) {
|
bool common_hal_displayio_parallelbus_bus_free(mp_obj_t obj) {
|
||||||
return false;
|
/* SNIP - same as from SAMD and NRF ports */
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t obj) {
|
bool common_hal_displayio_parallelbus_begin_transaction(mp_obj_t obj) {
|
||||||
|
/* SNIP - same as from SAMD and NRF ports */
|
||||||
return false;
|
displayio_parallelbus_obj_t* self = MP_OBJ_TO_PTR(obj);
|
||||||
|
common_hal_digitalio_digitalinout_set_value(&self->chip_select, false);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type,
|
void common_hal_displayio_parallelbus_send(mp_obj_t obj, display_byte_type_t byte_type,
|
||||||
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
|
display_chip_select_behavior_t chip_select, const uint8_t *data, uint32_t data_length) {
|
||||||
|
displayio_parallelbus_obj_t* self = MP_OBJ_TO_PTR(obj);
|
||||||
|
common_hal_digitalio_digitalinout_set_value(&self->command, byte_type == DISPLAY_DATA);
|
||||||
|
|
||||||
|
uint32_t* clear_write = self->write_clear_register;
|
||||||
|
uint32_t* set_write = self->write_set_register;
|
||||||
|
|
||||||
|
const uint32_t mask = self->write_mask;
|
||||||
|
|
||||||
|
/* Setup structures for data writing. The ESP32-S2 port differs from the SAMD and NRF ports
|
||||||
|
* because I have not found a way to write a single byte into the ESP32-S2 registers.
|
||||||
|
* For the ESP32-S2, I create a 32-bit data_buffer that is used to transfer the data bytes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
*clear_write = mask; // Clear the write pin to prepare the registers before storing the
|
||||||
|
// register value into data_buffer
|
||||||
|
|
||||||
|
const uint32_t data_buffer = *self->bus; // store the initial output register values into the data output buffer
|
||||||
|
uint8_t* data_address = ((uint8_t*) &data_buffer) + (self->data0_pin / 8); /* address inside data_buffer where
|
||||||
|
* each data byte will be written to the data pin registers
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
if ( self->data_write_same_register ) { // data and write pins are on the same register
|
||||||
|
for (uint32_t i = 0; i < data_length; i++) {
|
||||||
|
|
||||||
|
/* Note: If the write pin and data pins are controlled by the same GPIO register, we can eliminate
|
||||||
|
* the "clear_write" step below, since the write pin is cleared when the data_buffer is written
|
||||||
|
* to the bus.
|
||||||
|
*/
|
||||||
|
|
||||||
|
*(data_address) = data[i]; // stuff the data byte into the data_buffer at the correct offset byte location
|
||||||
|
*self->bus = data_buffer; // write the data to the output register
|
||||||
|
*set_write = mask; // set the write pin
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else { // data and write pins are on different registers
|
||||||
|
for (uint32_t i = 0; i < data_length; i++) {
|
||||||
|
*clear_write = mask; // clear the write pin (See comment above, this may not be necessary).
|
||||||
|
*(data_address) = data[i]; // stuff the data byte into the data_buffer at the correct offset byte location
|
||||||
|
*self->bus = data_buffer; // write the data to the output register
|
||||||
|
*set_write = mask; // set the write pin
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_displayio_parallelbus_end_transaction(mp_obj_t obj) {
|
void common_hal_displayio_parallelbus_end_transaction(mp_obj_t obj) {
|
||||||
|
/* SNIP - same as from SAMD and NRF ports */
|
||||||
|
displayio_parallelbus_obj_t* self = MP_OBJ_TO_PTR(obj);
|
||||||
|
common_hal_digitalio_digitalinout_set_value(&self->chip_select, true);
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,17 @@
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
mp_obj_base_t base;
|
mp_obj_base_t base;
|
||||||
|
uint32_t* bus; // pointer where 8 bits of data are written to the display
|
||||||
|
digitalio_digitalinout_obj_t command;
|
||||||
|
digitalio_digitalinout_obj_t chip_select;
|
||||||
|
digitalio_digitalinout_obj_t reset;
|
||||||
|
digitalio_digitalinout_obj_t write;
|
||||||
|
digitalio_digitalinout_obj_t read;
|
||||||
|
uint8_t data0_pin; // pin number for the lowest number data pin. Must be 8-bit aligned
|
||||||
|
bool data_write_same_register; // if data and write pins are in the sare
|
||||||
|
uint32_t* write_set_register; // pointer to the write group for setting the write bit to latch the data on the LCD
|
||||||
|
uint32_t* write_clear_register; // pointer to the write group for clearing the write bit to latch the data on the LCD
|
||||||
|
uint32_t write_mask; // bit mask for the single bit for the write pin register
|
||||||
} displayio_parallelbus_obj_t;
|
} displayio_parallelbus_obj_t;
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_DISPLAYIO_PARALLELBUS_H
|
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_DISPLAYIO_PARALLELBUS_H
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
* The MIT License (MIT)
|
* The MIT License (MIT)
|
||||||
*
|
*
|
||||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||||
|
* Copyright (c) 2020 Lucian Copeland for Adafruit Industries
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
@ -37,25 +38,162 @@
|
|||||||
#include "components/lwip/lwip/src/include/lwip/sys.h"
|
#include "components/lwip/lwip/src/include/lwip/sys.h"
|
||||||
#include "components/lwip/lwip/src/include/lwip/netdb.h"
|
#include "components/lwip/lwip/src/include/lwip/netdb.h"
|
||||||
|
|
||||||
|
STATIC socketpool_socket_obj_t * open_socket_handles[CONFIG_LWIP_MAX_SOCKETS]; // 4 on the wrover/wroom
|
||||||
|
|
||||||
|
void socket_reset(void) {
|
||||||
|
for (size_t i = 0; i < MP_ARRAY_SIZE(open_socket_handles); i++) {
|
||||||
|
if (open_socket_handles[i]) {
|
||||||
|
if (open_socket_handles[i]->num > 0) {
|
||||||
|
common_hal_socketpool_socket_close(open_socket_handles[i]);
|
||||||
|
open_socket_handles[i] = NULL;
|
||||||
|
} else {
|
||||||
|
// accidentally got a TCP socket in here, or something.
|
||||||
|
open_socket_handles[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool register_open_socket(socketpool_socket_obj_t* self) {
|
||||||
|
for (size_t i = 0; i < MP_ARRAY_SIZE(open_socket_handles); i++) {
|
||||||
|
if (open_socket_handles[i] == NULL) {
|
||||||
|
open_socket_handles[i] = self;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
STATIC void _lazy_init_LWIP(socketpool_socket_obj_t* self) {
|
||||||
|
if (self->num != -1) {
|
||||||
|
return; //safe to call on existing socket
|
||||||
|
}
|
||||||
|
if (self->tls != NULL) {
|
||||||
|
mp_raise_RuntimeError(translate("Invalid use of TLS Socket"));
|
||||||
|
}
|
||||||
|
int socknum = -1;
|
||||||
|
socknum = lwip_socket(self->family, self->type, self->ipproto);
|
||||||
|
if (socknum < 0 || !register_open_socket(self)) {
|
||||||
|
mp_raise_RuntimeError(translate("Out of sockets"));
|
||||||
|
}
|
||||||
|
self->num = socknum;
|
||||||
|
lwip_fcntl(socknum, F_SETFL, O_NONBLOCK);
|
||||||
|
}
|
||||||
|
|
||||||
|
STATIC void _lazy_init_TLS(socketpool_socket_obj_t* self) {
|
||||||
|
if (self->type != SOCK_STREAM || self->num != -1) {
|
||||||
|
mp_raise_RuntimeError(translate("Invalid socket for TLS"));
|
||||||
|
}
|
||||||
|
esp_tls_t* tls_handle = esp_tls_init();
|
||||||
|
if (tls_handle == NULL) {
|
||||||
|
mp_raise_espidf_MemoryError();
|
||||||
|
}
|
||||||
|
self->tls = tls_handle;
|
||||||
|
}
|
||||||
|
|
||||||
void common_hal_socketpool_socket_settimeout(socketpool_socket_obj_t* self, mp_uint_t timeout_ms) {
|
void common_hal_socketpool_socket_settimeout(socketpool_socket_obj_t* self, mp_uint_t timeout_ms) {
|
||||||
self->timeout_ms = timeout_ms;
|
self->timeout_ms = timeout_ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_socketpool_socket_connect(socketpool_socket_obj_t* self, const char* host, mp_uint_t hostlen, mp_int_t port) {
|
bool common_hal_socketpool_socket_bind(socketpool_socket_obj_t* self,
|
||||||
|
const char* host, size_t hostlen, uint8_t port) {
|
||||||
|
_lazy_init_LWIP(self);
|
||||||
|
|
||||||
|
struct sockaddr_in bind_addr;
|
||||||
|
bind_addr.sin_addr.s_addr = inet_addr(host);
|
||||||
|
bind_addr.sin_family = AF_INET;
|
||||||
|
bind_addr.sin_port = htons(port);
|
||||||
|
|
||||||
|
int opt = 1;
|
||||||
|
int err = lwip_setsockopt(self->num, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
|
||||||
|
if (err != 0) {
|
||||||
|
mp_raise_RuntimeError(translate("Issue setting SO_REUSEADDR"));
|
||||||
|
}
|
||||||
|
int result = lwip_bind(self->num, (struct sockaddr *)&bind_addr, sizeof(bind_addr)) == 0;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool common_hal_socketpool_socket_listen(socketpool_socket_obj_t* self, int backlog) {
|
||||||
|
return lwip_listen(self->num, backlog) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
socketpool_socket_obj_t* common_hal_socketpool_socket_accept(socketpool_socket_obj_t* self,
|
||||||
|
uint8_t* ip, uint *port) {
|
||||||
|
struct sockaddr_in accept_addr;
|
||||||
|
socklen_t socklen = sizeof(accept_addr);
|
||||||
|
int newsoc = -1;
|
||||||
|
bool timed_out = false;
|
||||||
|
uint64_t start_ticks = supervisor_ticks_ms64();
|
||||||
|
|
||||||
|
if (self->timeout_ms != (uint)-1) {
|
||||||
|
mp_printf(&mp_plat_print, "will timeout");
|
||||||
|
} else {
|
||||||
|
mp_printf(&mp_plat_print, "won't timeout");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow timeouts and interrupts
|
||||||
|
while (newsoc == -1 &&
|
||||||
|
!timed_out &&
|
||||||
|
!mp_hal_is_interrupted()) {
|
||||||
|
if (self->timeout_ms != (uint)-1) {
|
||||||
|
timed_out = supervisor_ticks_ms64() - start_ticks >= self->timeout_ms;
|
||||||
|
}
|
||||||
|
RUN_BACKGROUND_TASKS;
|
||||||
|
newsoc = lwip_accept(self->num, (struct sockaddr *)&accept_addr, &socklen);
|
||||||
|
// In non-blocking mode, fail instead of looping
|
||||||
|
if (newsoc == -1 && self->timeout_ms == 0) {
|
||||||
|
mp_raise_OSError(MP_EAGAIN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!timed_out) {
|
||||||
|
// harmless on failure but avoiding memcpy is faster
|
||||||
|
memcpy((void *)ip, (void*)&accept_addr.sin_addr.s_addr, sizeof(accept_addr.sin_addr.s_addr));
|
||||||
|
*port = accept_addr.sin_port;
|
||||||
|
} else {
|
||||||
|
mp_raise_OSError(ETIMEDOUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newsoc > 0) {
|
||||||
|
// Create the socket
|
||||||
|
socketpool_socket_obj_t *sock = m_new_obj_with_finaliser(socketpool_socket_obj_t);
|
||||||
|
sock->base.type = &socketpool_socket_type;
|
||||||
|
sock->num = newsoc;
|
||||||
|
sock->tls = NULL;
|
||||||
|
sock->ssl_context = NULL;
|
||||||
|
sock->pool = self->pool;
|
||||||
|
|
||||||
|
if (!register_open_socket(sock)) {
|
||||||
|
mp_raise_OSError(MP_EBADF);
|
||||||
|
}
|
||||||
|
|
||||||
|
lwip_fcntl(newsoc, F_SETFL, O_NONBLOCK);
|
||||||
|
return sock;
|
||||||
|
} else {
|
||||||
|
mp_raise_OSError(MP_EBADF);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool common_hal_socketpool_socket_connect(socketpool_socket_obj_t* self,
|
||||||
|
const char* host, mp_uint_t hostlen, mp_int_t port) {
|
||||||
// For simplicity we use esp_tls for all TCP connections. If it's not SSL, ssl_context will be
|
// For simplicity we use esp_tls for all TCP connections. If it's not SSL, ssl_context will be
|
||||||
// NULL and should still work. This makes regular TCP connections more memory expensive but TLS
|
// NULL and should still work. This makes regular TCP connections more memory expensive but TLS
|
||||||
// should become more and more common. Therefore, we optimize for the TLS case.
|
// should become more and more common. Therefore, we optimize for the TLS case.
|
||||||
|
|
||||||
|
// Todo: move to SSL Wrapper and add lwip_connect()
|
||||||
|
_lazy_init_TLS(self);
|
||||||
|
|
||||||
esp_tls_cfg_t* tls_config = NULL;
|
esp_tls_cfg_t* tls_config = NULL;
|
||||||
if (self->ssl_context != NULL) {
|
if (self->ssl_context != NULL) {
|
||||||
tls_config = &self->ssl_context->ssl_config;
|
tls_config = &self->ssl_context->ssl_config;
|
||||||
}
|
}
|
||||||
int result = esp_tls_conn_new_sync(host, hostlen, port, tls_config, self->tcp);
|
int result = esp_tls_conn_new_sync(host, hostlen, port, tls_config, self->tls);
|
||||||
self->connected = result >= 0;
|
self->connected = result >= 0;
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
int esp_tls_code;
|
int esp_tls_code;
|
||||||
int flags;
|
int flags;
|
||||||
esp_err_t err = esp_tls_get_and_clear_last_error(self->tcp->error_handle, &esp_tls_code, &flags);
|
esp_err_t err = esp_tls_get_and_clear_last_error(self->tls->error_handle, &esp_tls_code, &flags);
|
||||||
|
|
||||||
if (err == ESP_ERR_MBEDTLS_SSL_SETUP_FAILED) {
|
if (err == ESP_ERR_MBEDTLS_SSL_SETUP_FAILED) {
|
||||||
mp_raise_espidf_MemoryError();
|
mp_raise_espidf_MemoryError();
|
||||||
@ -70,7 +208,7 @@ bool common_hal_socketpool_socket_connect(socketpool_socket_obj_t* self, const c
|
|||||||
// shouldn't hit this timeout because we try to only read available data. However, there is
|
// shouldn't hit this timeout because we try to only read available data. However, there is
|
||||||
// always a chance that we try to read something that is used internally.
|
// always a chance that we try to read something that is used internally.
|
||||||
int fd;
|
int fd;
|
||||||
esp_tls_get_conn_sockfd(self->tcp, &fd);
|
esp_tls_get_conn_sockfd(self->tls, &fd);
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
tv.tv_sec = 2 * 60; // Two minutes
|
tv.tv_sec = 2 * 60; // Two minutes
|
||||||
tv.tv_usec = 0;
|
tv.tv_usec = 0;
|
||||||
@ -86,7 +224,15 @@ bool common_hal_socketpool_socket_get_connected(socketpool_socket_obj_t* self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mp_uint_t common_hal_socketpool_socket_send(socketpool_socket_obj_t* self, const uint8_t* buf, mp_uint_t len) {
|
mp_uint_t common_hal_socketpool_socket_send(socketpool_socket_obj_t* self, const uint8_t* buf, mp_uint_t len) {
|
||||||
size_t sent = esp_tls_conn_write(self->tcp, buf, len);
|
int sent = -1;
|
||||||
|
if (self->num != -1) {
|
||||||
|
// LWIP Socket
|
||||||
|
// TODO: deal with potential failure/add timeout?
|
||||||
|
sent = lwip_send(self->num, buf, len, 0);
|
||||||
|
} else if (self->tls != NULL) {
|
||||||
|
// TLS Socket
|
||||||
|
sent = esp_tls_conn_write(self->tls, buf, len);
|
||||||
|
}
|
||||||
|
|
||||||
if (sent < 0) {
|
if (sent < 0) {
|
||||||
mp_raise_OSError(MP_ENOTCONN);
|
mp_raise_OSError(MP_ENOTCONN);
|
||||||
@ -95,45 +241,73 @@ mp_uint_t common_hal_socketpool_socket_send(socketpool_socket_obj_t* self, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
mp_uint_t common_hal_socketpool_socket_recv_into(socketpool_socket_obj_t* self, const uint8_t* buf, mp_uint_t len) {
|
mp_uint_t common_hal_socketpool_socket_recv_into(socketpool_socket_obj_t* self, const uint8_t* buf, mp_uint_t len) {
|
||||||
size_t received = 0;
|
int received = 0;
|
||||||
int status = 0;
|
bool timed_out = false;
|
||||||
uint64_t start_ticks = supervisor_ticks_ms64();
|
|
||||||
int sockfd;
|
if (self->num != -1) {
|
||||||
esp_err_t err = esp_tls_get_conn_sockfd(self->tcp, &sockfd);
|
// LWIP Socket
|
||||||
if (err != ESP_OK) {
|
uint64_t start_ticks = supervisor_ticks_ms64();
|
||||||
|
received = -1;
|
||||||
|
while (received == -1 &&
|
||||||
|
!timed_out &&
|
||||||
|
!mp_hal_is_interrupted()) {
|
||||||
|
if (self->timeout_ms != (uint)-1) {
|
||||||
|
timed_out = supervisor_ticks_ms64() - start_ticks >= self->timeout_ms;
|
||||||
|
}
|
||||||
|
RUN_BACKGROUND_TASKS;
|
||||||
|
received = lwip_recv(self->num, (void*) buf, len - 1, 0);
|
||||||
|
|
||||||
|
// In non-blocking mode, fail instead of looping
|
||||||
|
if (received == -1 && self->timeout_ms == 0) {
|
||||||
|
mp_raise_OSError(MP_EAGAIN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (self->tls != NULL) {
|
||||||
|
// TLS Socket
|
||||||
|
int status = 0;
|
||||||
|
uint64_t start_ticks = supervisor_ticks_ms64();
|
||||||
|
int sockfd;
|
||||||
|
esp_err_t err = esp_tls_get_conn_sockfd(self->tls, &sockfd);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
mp_raise_OSError(MP_EBADF);
|
||||||
|
}
|
||||||
|
while (received == 0 &&
|
||||||
|
status >= 0 &&
|
||||||
|
!timed_out &&
|
||||||
|
!mp_hal_is_interrupted()) {
|
||||||
|
if (self->timeout_ms != (uint)-1) {
|
||||||
|
timed_out = self->timeout_ms == 0 || supervisor_ticks_ms64() - start_ticks >= self->timeout_ms;
|
||||||
|
}
|
||||||
|
RUN_BACKGROUND_TASKS;
|
||||||
|
size_t available = esp_tls_get_bytes_avail(self->tls);
|
||||||
|
if (available == 0) {
|
||||||
|
// This reads the raw socket buffer and is used for non-TLS connections
|
||||||
|
// and between encrypted TLS blocks.
|
||||||
|
status = lwip_ioctl(sockfd, FIONREAD, &available);
|
||||||
|
}
|
||||||
|
size_t remaining = len - received;
|
||||||
|
if (available > remaining) {
|
||||||
|
available = remaining;
|
||||||
|
}
|
||||||
|
if (available > 0) {
|
||||||
|
status = esp_tls_conn_read(self->tls, (void*) buf + received, available);
|
||||||
|
if (status == 0) {
|
||||||
|
// Reading zero when something is available indicates a closed
|
||||||
|
// connection. (The available bytes could have been TLS internal.)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (status > 0) {
|
||||||
|
received += status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Socket does not have a valid descriptor of either type
|
||||||
mp_raise_OSError(MP_EBADF);
|
mp_raise_OSError(MP_EBADF);
|
||||||
}
|
}
|
||||||
while (received == 0 &&
|
|
||||||
status >= 0 &&
|
|
||||||
(self->timeout_ms == 0 || supervisor_ticks_ms64() - start_ticks <= self->timeout_ms) &&
|
|
||||||
!mp_hal_is_interrupted()) {
|
|
||||||
RUN_BACKGROUND_TASKS;
|
|
||||||
size_t available = esp_tls_get_bytes_avail(self->tcp);
|
|
||||||
if (available == 0) {
|
|
||||||
// This reads the raw socket buffer and is used for non-TLS connections
|
|
||||||
// and between encrypted TLS blocks.
|
|
||||||
status = lwip_ioctl(sockfd, FIONREAD, &available);
|
|
||||||
}
|
|
||||||
size_t remaining = len - received;
|
|
||||||
if (available > remaining) {
|
|
||||||
available = remaining;
|
|
||||||
}
|
|
||||||
if (available > 0) {
|
|
||||||
status = esp_tls_conn_read(self->tcp, (void*) buf + received, available);
|
|
||||||
if (status == 0) {
|
|
||||||
// Reading zero when something is available indicates a closed
|
|
||||||
// connection. (The available bytes could have been TLS internal.)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (status > 0) {
|
|
||||||
received += status;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (received == 0) {
|
if (timed_out) {
|
||||||
// socket closed
|
mp_raise_OSError(ETIMEDOUT);
|
||||||
common_hal_socketpool_socket_close(self);
|
|
||||||
}
|
}
|
||||||
return received;
|
return received;
|
||||||
}
|
}
|
||||||
@ -141,6 +315,8 @@ mp_uint_t common_hal_socketpool_socket_recv_into(socketpool_socket_obj_t* self,
|
|||||||
mp_uint_t common_hal_socketpool_socket_sendto(socketpool_socket_obj_t* self,
|
mp_uint_t common_hal_socketpool_socket_sendto(socketpool_socket_obj_t* self,
|
||||||
const char* host, size_t hostlen, uint8_t port, const uint8_t* buf, mp_uint_t len) {
|
const char* host, size_t hostlen, uint8_t port, const uint8_t* buf, mp_uint_t len) {
|
||||||
|
|
||||||
|
_lazy_init_LWIP(self);
|
||||||
|
|
||||||
// Get the IP address string
|
// Get the IP address string
|
||||||
const struct addrinfo hints = {
|
const struct addrinfo hints = {
|
||||||
.ai_family = AF_INET,
|
.ai_family = AF_INET,
|
||||||
@ -151,17 +327,15 @@ mp_uint_t common_hal_socketpool_socket_sendto(socketpool_socket_obj_t* self,
|
|||||||
if (error != 0 || result == NULL) {
|
if (error != 0 || result == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#pragma GCC diagnostic push
|
|
||||||
#pragma GCC diagnostic ignored "-Wcast-align"
|
|
||||||
struct in_addr *addr = &((struct sockaddr_in *)result->ai_addr)->sin_addr;
|
|
||||||
#pragma GCC diagnostic pop
|
|
||||||
char ip_str[IP4ADDR_STRLEN_MAX];
|
|
||||||
inet_ntoa_r(*addr, ip_str, IP4ADDR_STRLEN_MAX);
|
|
||||||
freeaddrinfo(result);
|
|
||||||
|
|
||||||
// Set parameters
|
// Set parameters
|
||||||
struct sockaddr_in dest_addr;
|
struct sockaddr_in dest_addr;
|
||||||
dest_addr.sin_addr.s_addr = inet_addr((const char *)ip_str);
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||||
|
dest_addr.sin_addr.s_addr = ((struct sockaddr_in *)result->ai_addr)->sin_addr.s_addr;
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
freeaddrinfo(result);
|
||||||
|
|
||||||
dest_addr.sin_family = AF_INET;
|
dest_addr.sin_family = AF_INET;
|
||||||
dest_addr.sin_port = htons(port);
|
dest_addr.sin_port = htons(port);
|
||||||
|
|
||||||
@ -176,26 +350,50 @@ mp_uint_t common_hal_socketpool_socket_sendto(socketpool_socket_obj_t* self,
|
|||||||
mp_uint_t common_hal_socketpool_socket_recvfrom_into(socketpool_socket_obj_t* self,
|
mp_uint_t common_hal_socketpool_socket_recvfrom_into(socketpool_socket_obj_t* self,
|
||||||
uint8_t* buf, mp_uint_t len, uint8_t* ip, uint *port) {
|
uint8_t* buf, mp_uint_t len, uint8_t* ip, uint *port) {
|
||||||
|
|
||||||
|
_lazy_init_LWIP(self);
|
||||||
|
|
||||||
struct sockaddr_in source_addr;
|
struct sockaddr_in source_addr;
|
||||||
socklen_t socklen = sizeof(source_addr);
|
socklen_t socklen = sizeof(source_addr);
|
||||||
int bytes_received = lwip_recvfrom(self->num, buf, len, 0, (struct sockaddr *)&source_addr, &socklen);
|
|
||||||
|
|
||||||
memcpy((void *)ip, (void*)&source_addr.sin_addr.s_addr, sizeof source_addr.sin_addr.s_addr);
|
// LWIP Socket
|
||||||
*port = source_addr.sin_port;
|
uint64_t start_ticks = supervisor_ticks_ms64();
|
||||||
|
int received = -1;
|
||||||
|
bool timed_out = false;
|
||||||
|
while (received == -1 &&
|
||||||
|
!timed_out &&
|
||||||
|
!mp_hal_is_interrupted()) {
|
||||||
|
if (self->timeout_ms != (uint)-1) {
|
||||||
|
timed_out = supervisor_ticks_ms64() - start_ticks >= self->timeout_ms;
|
||||||
|
}
|
||||||
|
RUN_BACKGROUND_TASKS;
|
||||||
|
received = lwip_recvfrom(self->num, buf, len, 0, (struct sockaddr *)&source_addr, &socklen);
|
||||||
|
|
||||||
if (bytes_received < 0) {
|
// In non-blocking mode, fail instead of looping
|
||||||
|
if (received == -1 && self->timeout_ms == 0) {
|
||||||
|
mp_raise_OSError(MP_EAGAIN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!timed_out) {
|
||||||
|
memcpy((void *)ip, (void*)&source_addr.sin_addr.s_addr, sizeof(source_addr.sin_addr.s_addr));
|
||||||
|
*port = source_addr.sin_port;
|
||||||
|
} else {
|
||||||
|
mp_raise_OSError(ETIMEDOUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (received < 0) {
|
||||||
mp_raise_BrokenPipeError();
|
mp_raise_BrokenPipeError();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return bytes_received;
|
return received;
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_socketpool_socket_close(socketpool_socket_obj_t* self) {
|
void common_hal_socketpool_socket_close(socketpool_socket_obj_t* self) {
|
||||||
self->connected = false;
|
self->connected = false;
|
||||||
if (self->tcp != NULL) {
|
if (self->tls != NULL) {
|
||||||
esp_tls_conn_destroy(self->tcp);
|
esp_tls_conn_destroy(self->tls);
|
||||||
self->tcp = NULL;
|
self->tls = NULL;
|
||||||
}
|
}
|
||||||
if (self->num >= 0) {
|
if (self->num >= 0) {
|
||||||
lwip_shutdown(self->num, 0);
|
lwip_shutdown(self->num, 0);
|
||||||
@ -205,7 +403,7 @@ void common_hal_socketpool_socket_close(socketpool_socket_obj_t* self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_socketpool_socket_get_closed(socketpool_socket_obj_t* self) {
|
bool common_hal_socketpool_socket_get_closed(socketpool_socket_obj_t* self) {
|
||||||
return self->tcp == NULL && self->num < 0;
|
return self->tls == NULL && self->num < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,11 +37,17 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
mp_obj_base_t base;
|
mp_obj_base_t base;
|
||||||
int num;
|
int num;
|
||||||
|
int type;
|
||||||
|
int family;
|
||||||
|
int ipproto;
|
||||||
bool connected;
|
bool connected;
|
||||||
esp_tls_t* tcp;
|
esp_tls_t* tls;
|
||||||
ssl_sslcontext_obj_t* ssl_context;
|
ssl_sslcontext_obj_t* ssl_context;
|
||||||
socketpool_socketpool_obj_t* pool;
|
socketpool_socketpool_obj_t* pool;
|
||||||
mp_uint_t timeout_ms;
|
mp_uint_t timeout_ms;
|
||||||
} socketpool_socket_obj_t;
|
} socketpool_socket_obj_t;
|
||||||
|
|
||||||
|
void socket_reset(void);
|
||||||
|
bool register_open_socket(socketpool_socket_obj_t* self);
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_SOCKETPOOL_SOCKET_H
|
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_SOCKETPOOL_SOCKET_H
|
||||||
|
@ -65,25 +65,20 @@ socketpool_socket_obj_t* common_hal_socketpool_socket(socketpool_socketpool_obj_
|
|||||||
mp_raise_NotImplementedError(translate("Only IPv4 sockets supported"));
|
mp_raise_NotImplementedError(translate("Only IPv4 sockets supported"));
|
||||||
}
|
}
|
||||||
|
|
||||||
int socknum = -1;
|
// Consider LWIP and MbedTLS "variant" sockets to be incompatible (for now)
|
||||||
esp_tls_t* tcp_handle = NULL;
|
// The variant of the socket is determined by whether the socket is wrapped
|
||||||
if (socket_type == SOCK_DGRAM || socket_type == SOCK_RAW) {
|
// by SSL. If no TLS handle is set in sslcontext_wrap_socket, the first call
|
||||||
socknum = lwip_socket(addr_family, socket_type, ipproto);
|
// of bind() or connect() will create a LWIP socket with a corresponding
|
||||||
} else {
|
// socketnum.
|
||||||
tcp_handle = esp_tls_init();
|
// TODO: move MbedTLS to its own duplicate Socket or Server API, maybe?
|
||||||
|
|
||||||
if (tcp_handle == NULL) {
|
|
||||||
mp_raise_espidf_MemoryError();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (socknum < 0 && tcp_handle == NULL) {
|
|
||||||
mp_raise_RuntimeError(translate("Out of sockets"));
|
|
||||||
}
|
|
||||||
|
|
||||||
socketpool_socket_obj_t *sock = m_new_obj_with_finaliser(socketpool_socket_obj_t);
|
socketpool_socket_obj_t *sock = m_new_obj_with_finaliser(socketpool_socket_obj_t);
|
||||||
sock->base.type = &socketpool_socket_type;
|
sock->base.type = &socketpool_socket_type;
|
||||||
sock->num = socknum;
|
sock->num = -1;
|
||||||
sock->tcp = tcp_handle;
|
sock->type = socket_type;
|
||||||
|
sock->family = addr_family;
|
||||||
|
sock->ipproto = ipproto;
|
||||||
|
|
||||||
|
sock->tls = NULL;
|
||||||
sock->ssl_context = NULL;
|
sock->ssl_context = NULL;
|
||||||
sock->pool = self;
|
sock->pool = self;
|
||||||
return sock;
|
return sock;
|
||||||
|
@ -72,7 +72,7 @@ void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled) {
|
|||||||
}
|
}
|
||||||
if (!self->started && enabled) {
|
if (!self->started && enabled) {
|
||||||
// esp_wifi_start() would default to soft-AP, thus setting it to station
|
// esp_wifi_start() would default to soft-AP, thus setting it to station
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
start_station(self);
|
||||||
ESP_ERROR_CHECK(esp_wifi_start());
|
ESP_ERROR_CHECK(esp_wifi_start());
|
||||||
self->started = true;
|
self->started = true;
|
||||||
return;
|
return;
|
||||||
@ -89,7 +89,9 @@ mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self) {
|
|||||||
if (self->current_scan != NULL) {
|
if (self->current_scan != NULL) {
|
||||||
mp_raise_RuntimeError(translate("Already scanning for wifi networks"));
|
mp_raise_RuntimeError(translate("Already scanning for wifi networks"));
|
||||||
}
|
}
|
||||||
// check enabled
|
if (!common_hal_wifi_radio_get_enabled(self)) {
|
||||||
|
mp_raise_RuntimeError(translate("wifi is not enabled"));
|
||||||
|
}
|
||||||
start_station(self);
|
start_station(self);
|
||||||
|
|
||||||
wifi_scannednetworks_obj_t *scan = m_new_obj(wifi_scannednetworks_obj_t);
|
wifi_scannednetworks_obj_t *scan = m_new_obj(wifi_scannednetworks_obj_t);
|
||||||
@ -126,7 +128,25 @@ void common_hal_wifi_radio_set_hostname(wifi_radio_obj_t *self, const char *host
|
|||||||
}
|
}
|
||||||
|
|
||||||
wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len) {
|
wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len) {
|
||||||
// check enabled
|
if (!common_hal_wifi_radio_get_enabled(self)) {
|
||||||
|
mp_raise_RuntimeError(translate("wifi is not enabled"));
|
||||||
|
}
|
||||||
|
|
||||||
|
EventBits_t bits;
|
||||||
|
// can't block since both bits are false after wifi_init
|
||||||
|
// both bits are true after an existing connection stops
|
||||||
|
bits = xEventGroupWaitBits(self->event_group_handle,
|
||||||
|
WIFI_CONNECTED_BIT | WIFI_DISCONNECTED_BIT,
|
||||||
|
pdTRUE,
|
||||||
|
pdTRUE,
|
||||||
|
0);
|
||||||
|
if (((bits & WIFI_CONNECTED_BIT) != 0) &&
|
||||||
|
!((bits & WIFI_DISCONNECTED_BIT) != 0)) {
|
||||||
|
return WIFI_RADIO_ERROR_NONE;
|
||||||
|
}
|
||||||
|
// explicitly clear bits since xEventGroupWaitBits may have timed out
|
||||||
|
xEventGroupClearBits(self->event_group_handle, WIFI_CONNECTED_BIT);
|
||||||
|
xEventGroupClearBits(self->event_group_handle, WIFI_DISCONNECTED_BIT);
|
||||||
start_station(self);
|
start_station(self);
|
||||||
|
|
||||||
wifi_config_t* config = &self->sta_config;
|
wifi_config_t* config = &self->sta_config;
|
||||||
@ -157,7 +177,6 @@ wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t
|
|||||||
self->retries_left = 5;
|
self->retries_left = 5;
|
||||||
esp_wifi_connect();
|
esp_wifi_connect();
|
||||||
|
|
||||||
EventBits_t bits;
|
|
||||||
do {
|
do {
|
||||||
RUN_BACKGROUND_TASKS;
|
RUN_BACKGROUND_TASKS;
|
||||||
bits = xEventGroupWaitBits(self->event_group_handle,
|
bits = xEventGroupWaitBits(self->event_group_handle,
|
||||||
|
@ -30,7 +30,6 @@
|
|||||||
|
|
||||||
#define MICROPY_NLR_THUMB (0)
|
#define MICROPY_NLR_THUMB (0)
|
||||||
|
|
||||||
#define MICROPY_PY_UJSON (1)
|
|
||||||
#define MICROPY_USE_INTERNAL_PRINTF (0)
|
#define MICROPY_USE_INTERNAL_PRINTF (0)
|
||||||
#define MICROPY_PY_SYS_PLATFORM "Espressif ESP32-S2"
|
#define MICROPY_PY_SYS_PLATFORM "Espressif ESP32-S2"
|
||||||
|
|
||||||
|
@ -46,8 +46,13 @@ void peripherals_touch_init(const touch_pad_t touchpad) {
|
|||||||
if (!touch_inited) {
|
if (!touch_inited) {
|
||||||
touch_pad_init();
|
touch_pad_init();
|
||||||
touch_pad_set_fsm_mode(TOUCH_FSM_MODE_TIMER);
|
touch_pad_set_fsm_mode(TOUCH_FSM_MODE_TIMER);
|
||||||
|
}
|
||||||
|
// touch_pad_config() must be done before touch_pad_fsm_start() the first time.
|
||||||
|
// Otherwise the calibration is wrong and we get maximum raw values if there is
|
||||||
|
// a trace of any significant length on the pin.
|
||||||
|
touch_pad_config(touchpad);
|
||||||
|
if (!touch_inited) {
|
||||||
touch_pad_fsm_start();
|
touch_pad_fsm_start();
|
||||||
touch_inited = true;
|
touch_inited = true;
|
||||||
}
|
}
|
||||||
touch_pad_config(touchpad);
|
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#include "common-hal/pulseio/PulseIn.h"
|
#include "common-hal/pulseio/PulseIn.h"
|
||||||
#include "common-hal/pwmio/PWMOut.h"
|
#include "common-hal/pwmio/PWMOut.h"
|
||||||
#include "common-hal/watchdog/WatchDogTimer.h"
|
#include "common-hal/watchdog/WatchDogTimer.h"
|
||||||
|
#include "common-hal/socketpool/Socket.h"
|
||||||
#include "common-hal/wifi/__init__.h"
|
#include "common-hal/wifi/__init__.h"
|
||||||
#include "supervisor/memory.h"
|
#include "supervisor/memory.h"
|
||||||
#include "supervisor/shared/tick.h"
|
#include "supervisor/shared/tick.h"
|
||||||
@ -143,9 +144,9 @@ safe_mode_t port_init(void) {
|
|||||||
case ESP_RST_BROWNOUT:
|
case ESP_RST_BROWNOUT:
|
||||||
return BROWNOUT;
|
return BROWNOUT;
|
||||||
case ESP_RST_PANIC:
|
case ESP_RST_PANIC:
|
||||||
|
return HARD_CRASH;
|
||||||
case ESP_RST_INT_WDT:
|
case ESP_RST_INT_WDT:
|
||||||
case ESP_RST_WDT:
|
case ESP_RST_WDT:
|
||||||
return HARD_CRASH;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -222,6 +223,10 @@ void reset_port(void) {
|
|||||||
#if CIRCUITPY_WIFI
|
#if CIRCUITPY_WIFI
|
||||||
wifi_reset();
|
wifi_reset();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CIRCUITPY_SOCKETPOOL
|
||||||
|
socket_reset();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset_to_bootloader(void) {
|
void reset_to_bootloader(void) {
|
||||||
|
@ -31,8 +31,6 @@
|
|||||||
#define CIRCUITPY_INTERNAL_NVM_SIZE (0)
|
#define CIRCUITPY_INTERNAL_NVM_SIZE (0)
|
||||||
#define MICROPY_NLR_THUMB (0)
|
#define MICROPY_NLR_THUMB (0)
|
||||||
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
||||||
#define MICROPY_PY_UBINASCII (1)
|
|
||||||
#define MICROPY_PY_UJSON (1)
|
|
||||||
|
|
||||||
#include "py/circuitpy_mpconfig.h"
|
#include "py/circuitpy_mpconfig.h"
|
||||||
|
|
||||||
|
@ -41,8 +41,6 @@ extern uint8_t _ld_default_stack_size;
|
|||||||
#define CIRCUITPY_DEFAULT_STACK_SIZE ((uint32_t) &_ld_default_stack_size)
|
#define CIRCUITPY_DEFAULT_STACK_SIZE ((uint32_t) &_ld_default_stack_size)
|
||||||
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
|
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
|
||||||
#define MICROPY_PY_FUNCTION_ATTRS (0)
|
#define MICROPY_PY_FUNCTION_ATTRS (0)
|
||||||
#define MICROPY_PY_IO (1)
|
|
||||||
#define MICROPY_PY_UJSON (1)
|
|
||||||
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@ CIRCUITPY_RTC = 1
|
|||||||
CIRCUITPY_SDCARDIO = 0
|
CIRCUITPY_SDCARDIO = 0
|
||||||
CIRCUITPY_TOUCHIO = 0
|
CIRCUITPY_TOUCHIO = 0
|
||||||
CIRCUITPY_ULAB = 0
|
CIRCUITPY_ULAB = 0
|
||||||
|
CIRCUITPY_BUSDEVICE = 0
|
||||||
MICROPY_PY_ASYNC_AWAIT = 0
|
MICROPY_PY_ASYNC_AWAIT = 0
|
||||||
|
|
||||||
SUPEROPT_GC = 0
|
SUPEROPT_GC = 0
|
||||||
|
@ -13,11 +13,13 @@ INTERNAL_FLASH_FILESYSTEM = 1
|
|||||||
|
|
||||||
CIRCUITPY_AESIO = 1
|
CIRCUITPY_AESIO = 1
|
||||||
CIRCUITPY_AUDIOMP3 = 0
|
CIRCUITPY_AUDIOMP3 = 0
|
||||||
|
CIRCUITPY_BUSDEVICE = 0
|
||||||
CIRCUITPY_BUSIO = 1
|
CIRCUITPY_BUSIO = 1
|
||||||
CIRCUITPY_DISPLAYIO = 0
|
CIRCUITPY_DISPLAYIO = 0
|
||||||
|
CIRCUITPY_ERRNO = 0
|
||||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||||
CIRCUITPY_MSGPACK = 0
|
|
||||||
CIRCUITPY_GAMEPAD = 0
|
CIRCUITPY_GAMEPAD = 0
|
||||||
|
CIRCUITPY_MSGPACK = 0
|
||||||
CIRCUITPY_NEOPIXEL_WRITE = 0
|
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||||
CIRCUITPY_NVM = 0
|
CIRCUITPY_NVM = 0
|
||||||
CIRCUITPY_PIXELBUF = 0
|
CIRCUITPY_PIXELBUF = 0
|
||||||
@ -28,7 +30,6 @@ CIRCUITPY_SDCARDIO = 0
|
|||||||
CIRCUITPY_TOUCHIO = 0
|
CIRCUITPY_TOUCHIO = 0
|
||||||
CIRCUITPY_ULAB = 0
|
CIRCUITPY_ULAB = 0
|
||||||
CIRCUITPY_WATCHDOG = 1
|
CIRCUITPY_WATCHDOG = 1
|
||||||
CIRCUITPY_BUSDEVICE = 0
|
|
||||||
|
|
||||||
# Enable micropython.native
|
# Enable micropython.native
|
||||||
#CIRCUITPY_ENABLE_MPY_NATIVE = 1
|
#CIRCUITPY_ENABLE_MPY_NATIVE = 1
|
||||||
|
@ -35,11 +35,8 @@
|
|||||||
#include "peripherals/nrf/nvm.h" // for FLASH_PAGE_SIZE
|
#include "peripherals/nrf/nvm.h" // for FLASH_PAGE_SIZE
|
||||||
|
|
||||||
#define MICROPY_PY_FUNCTION_ATTRS (1)
|
#define MICROPY_PY_FUNCTION_ATTRS (1)
|
||||||
#define MICROPY_PY_IO (1)
|
|
||||||
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
||||||
#define MICROPY_PY_SYS_STDIO_BUFFER (1)
|
#define MICROPY_PY_SYS_STDIO_BUFFER (1)
|
||||||
#define MICROPY_PY_UBINASCII (1)
|
|
||||||
#define MICROPY_PY_UJSON (1)
|
|
||||||
|
|
||||||
// 24kiB stack
|
// 24kiB stack
|
||||||
#define CIRCUITPY_DEFAULT_STACK_SIZE (24*1024)
|
#define CIRCUITPY_DEFAULT_STACK_SIZE (24*1024)
|
||||||
|
1
ports/raspberrypi/.gitignore
vendored
Normal file
1
ports/raspberrypi/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
build-*/
|
274
ports/raspberrypi/Makefile
Normal file
274
ports/raspberrypi/Makefile
Normal file
@ -0,0 +1,274 @@
|
|||||||
|
# This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
#
|
||||||
|
# The MIT License (MIT)
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: Copyright (c) 2019 Dan Halbert for Adafruit Industries
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
# THE SOFTWARE.
|
||||||
|
|
||||||
|
# Select the board to build for.
|
||||||
|
ifeq ($(BOARD),)
|
||||||
|
$(error You must provide a BOARD parameter)
|
||||||
|
else
|
||||||
|
ifeq ($(wildcard boards/$(BOARD)/.),)
|
||||||
|
$(error Invalid BOARD specified)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# If the build directory is not given, make it reflect the board name.
|
||||||
|
BUILD ?= build-$(BOARD)
|
||||||
|
|
||||||
|
include ../../py/mkenv.mk
|
||||||
|
# Board-specific
|
||||||
|
include boards/$(BOARD)/mpconfigboard.mk
|
||||||
|
# Port-specific
|
||||||
|
include mpconfigport.mk
|
||||||
|
# CircuitPython-specific
|
||||||
|
include $(TOP)/py/circuitpy_mpconfig.mk
|
||||||
|
|
||||||
|
# qstr definitions (must come before including py.mk)
|
||||||
|
QSTR_DEFS = qstrdefsport.h
|
||||||
|
|
||||||
|
# include py core make definitions
|
||||||
|
include $(TOP)/py/py.mk
|
||||||
|
|
||||||
|
include $(TOP)/supervisor/supervisor.mk
|
||||||
|
|
||||||
|
# Include make rules and variables common across CircuitPython builds.
|
||||||
|
include $(TOP)/py/circuitpy_defns.mk
|
||||||
|
|
||||||
|
CROSS_COMPILE = arm-none-eabi-
|
||||||
|
|
||||||
|
HAL_DIR=hal/$(MCU_SERIES)
|
||||||
|
|
||||||
|
INC += -I. \
|
||||||
|
-I../.. \
|
||||||
|
-I../lib/mp-readline \
|
||||||
|
-I../lib/timeutils \
|
||||||
|
-Iboards/$(BOARD) \
|
||||||
|
-Iboards/ \
|
||||||
|
-isystem sdk/ \
|
||||||
|
-isystem sdk/src/common/pico_base/include/ \
|
||||||
|
-isystem sdk/src/common/pico_binary_info/include/ \
|
||||||
|
-isystem sdk/src/common/pico_stdlib/include/ \
|
||||||
|
-isystem sdk/src/common/pico_sync/include/ \
|
||||||
|
-isystem sdk/src/common/pico_time/include/ \
|
||||||
|
-isystem sdk/src/common/pico_util/include/ \
|
||||||
|
-isystem sdk/src/rp2040/hardware_regs/include/ \
|
||||||
|
-isystem sdk/src/rp2040/hardware_structs/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_adc/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_base/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_claim/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_clocks/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_dma/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_flash/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_gpio/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_irq/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_i2c/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_pio/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_pll/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_resets/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_spi/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_sync/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_timer/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_uart/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_watchdog/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/hardware_xosc/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/pico_multicore/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/pico_stdio/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/pico_printf/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/pico_float/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/pico_platform/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/pico_runtime/printf/include/ \
|
||||||
|
-isystem sdk/src/rp2_common/pico_bootrom/include/ \
|
||||||
|
-Isdk_config \
|
||||||
|
-I../../lib/tinyusb/src \
|
||||||
|
-I../../supervisor/shared/usb \
|
||||||
|
-I$(BUILD)
|
||||||
|
|
||||||
|
# Pico specific configuration
|
||||||
|
CFLAGS += -DPICO_ON_DEVICE=1 -DPICO_NO_BINARY_INFO=0 -DPICO_TIME_DEFAULT_ALARM_POOL_DISABLED=1 -DPICO_DIVIDER_CALL_IDIV0=0 -DPICO_DIVIDER_CALL_LDIV0=0 -DPICO_DIVIDER_HARDWARE=1 -DPICO_DOUBLE_ROM=1 -DPICO_FLOAT_ROM=1 -DPICO_MULTICORE=1 -DPICO_BITS_IN_RAM=0 -DPICO_DIVIDER_IN_RAM=0 -DPICO_DOUBLE_PROPAGATE_NANS=0 -DPICO_DOUBLE_IN_RAM=0 -DPICO_MEM_IN_RAM=0 -DPICO_FLOAT_IN_RAM=0 -DPICO_FLOAT_PROPAGATE_NANS=1 -DPICO_NO_FLASH=0 -DPICO_COPY_TO_RAM=0 -DPICO_DISABLE_SHARED_IRQ_HANDLERS=0
|
||||||
|
OPTIMIZATION_FLAGS ?= -O3
|
||||||
|
# TinyUSB defines
|
||||||
|
CFLAGS += -DTUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX=1 -DCFG_TUSB_MCU=OPT_MCU_RP2040 -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
|
||||||
|
|
||||||
|
# option to override default optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
||||||
|
CFLAGS += $(OPTIMIZATION_FLAGS)
|
||||||
|
|
||||||
|
#Debugging/Optimization
|
||||||
|
ifeq ($(DEBUG), 1)
|
||||||
|
CFLAGS += -ggdb3 -Og
|
||||||
|
# No LTO because we may place some functions in RAM instead of flash.
|
||||||
|
else
|
||||||
|
CFLAGS += -DNDEBUG
|
||||||
|
|
||||||
|
# No LTO because we may place some functions in RAM instead of flash.
|
||||||
|
|
||||||
|
ifdef CFLAGS_BOARD
|
||||||
|
CFLAGS += $(CFLAGS_BOARD)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Remove -Wno-stringop-overflow after we can test with CI's GCC 10. Mac's looks weird.
|
||||||
|
DISABLE_WARNINGS = -Wno-stringop-overflow -Wno-unused-function -Wno-unused-variable -Wno-strict-overflow -Wno-cast-align -Wno-strict-prototypes -Wno-nested-externs -Wno-double-promotion -Wno-sign-compare
|
||||||
|
|
||||||
|
CFLAGS += $(INC) -Wall -Werror -std=gnu11 -nostdlib -fshort-enums $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT) $(DISABLE_WARNINGS)
|
||||||
|
|
||||||
|
CFLAGS += \
|
||||||
|
-march=armv6-m \
|
||||||
|
-mthumb \
|
||||||
|
-mabi=aapcs-linux \
|
||||||
|
-mcpu=cortex-m0plus \
|
||||||
|
-msoft-float \
|
||||||
|
-mfloat-abi=soft
|
||||||
|
|
||||||
|
PICO_LDFLAGS = --specs=nosys.specs -Wl,--wrap=__aeabi_ldiv0 -Wl,--wrap=__aeabi_idiv0 -Wl,--wrap=__aeabi_lmul -Wl,--wrap=__clzsi2 -Wl,--wrap=__clzdi2 -Wl,--wrap=__ctzsi2 -Wl,--wrap=__ctzdi2 -Wl,--wrap=__popcountsi2 -Wl,--wrap=__popcountdi2 -Wl,--wrap=__clz -Wl,--wrap=__clzl -Wl,--wrap=__clzll -Wl,--wrap=__aeabi_idiv -Wl,--wrap=__aeabi_idivmod -Wl,--wrap=__aeabi_ldivmod -Wl,--wrap=__aeabi_uidiv -Wl,--wrap=__aeabi_uidivmod -Wl,--wrap=__aeabi_uldivmod -Wl,--wrap=__aeabi_dadd -Wl,--wrap=__aeabi_ddiv -Wl,--wrap=__aeabi_dmul -Wl,--wrap=__aeabi_drsub -Wl,--wrap=__aeabi_dsub -Wl,--wrap=__aeabi_cdcmpeq -Wl,--wrap=__aeabi_cdrcmple -Wl,--wrap=__aeabi_cdcmple -Wl,--wrap=__aeabi_dcmpeq -Wl,--wrap=__aeabi_dcmplt -Wl,--wrap=__aeabi_dcmple -Wl,--wrap=__aeabi_dcmpge -Wl,--wrap=__aeabi_dcmpgt -Wl,--wrap=__aeabi_dcmpun -Wl,--wrap=__aeabi_i2d -Wl,--wrap=__aeabi_l2d -Wl,--wrap=__aeabi_ui2d -Wl,--wrap=__aeabi_ul2d -Wl,--wrap=__aeabi_d2iz -Wl,--wrap=__aeabi_d2lz -Wl,--wrap=__aeabi_d2uiz -Wl,--wrap=__aeabi_d2ulz -Wl,--wrap=__aeabi_d2f -Wl,--wrap=sqrt -Wl,--wrap=cos -Wl,--wrap=sin -Wl,--wrap=tan -Wl,--wrap=atan2 -Wl,--wrap=exp -Wl,--wrap=log -Wl,--wrap=ldexp -Wl,--wrap=copysign -Wl,--wrap=trunc -Wl,--wrap=floor -Wl,--wrap=ceil -Wl,--wrap=round -Wl,--wrap=sincos -Wl,--wrap=asin -Wl,--wrap=acos -Wl,--wrap=atan -Wl,--wrap=sinh -Wl,--wrap=cosh -Wl,--wrap=tanh -Wl,--wrap=asinh -Wl,--wrap=acosh -Wl,--wrap=atanh -Wl,--wrap=exp2 -Wl,--wrap=log2 -Wl,--wrap=exp10 -Wl,--wrap=log10 -Wl,--wrap=pow -Wl,--wrap=powint -Wl,--wrap=hypot -Wl,--wrap=cbrt -Wl,--wrap=fmod -Wl,--wrap=drem -Wl,--wrap=remainder -Wl,--wrap=remquo -Wl,--wrap=expm1 -Wl,--wrap=log1p -Wl,--wrap=fma -Wl,--wrap=__aeabi_fadd -Wl,--wrap=__aeabi_fdiv -Wl,--wrap=__aeabi_fmul -Wl,--wrap=__aeabi_frsub -Wl,--wrap=__aeabi_fsub -Wl,--wrap=__aeabi_cfcmpeq -Wl,--wrap=__aeabi_cfrcmple -Wl,--wrap=__aeabi_cfcmple -Wl,--wrap=__aeabi_fcmpeq -Wl,--wrap=__aeabi_fcmplt -Wl,--wrap=__aeabi_fcmple -Wl,--wrap=__aeabi_fcmpge -Wl,--wrap=__aeabi_fcmpgt -Wl,--wrap=__aeabi_fcmpun -Wl,--wrap=__aeabi_i2f -Wl,--wrap=__aeabi_l2f -Wl,--wrap=__aeabi_ui2f -Wl,--wrap=__aeabi_ul2f -Wl,--wrap=__aeabi_f2iz -Wl,--wrap=__aeabi_f2lz -Wl,--wrap=__aeabi_f2uiz -Wl,--wrap=__aeabi_f2ulz -Wl,--wrap=__aeabi_f2d -Wl,--wrap=sqrtf -Wl,--wrap=cosf -Wl,--wrap=sinf -Wl,--wrap=tanf -Wl,--wrap=atan2f -Wl,--wrap=expf -Wl,--wrap=logf -Wl,--wrap=ldexpf -Wl,--wrap=copysignf -Wl,--wrap=truncf -Wl,--wrap=floorf -Wl,--wrap=ceilf -Wl,--wrap=roundf -Wl,--wrap=sincosf -Wl,--wrap=asinf -Wl,--wrap=acosf -Wl,--wrap=atanf -Wl,--wrap=sinhf -Wl,--wrap=coshf -Wl,--wrap=tanhf -Wl,--wrap=asinhf -Wl,--wrap=acoshf -Wl,--wrap=atanhf -Wl,--wrap=exp2f -Wl,--wrap=log2f -Wl,--wrap=exp10f -Wl,--wrap=log10f -Wl,--wrap=powf -Wl,--wrap=powintf -Wl,--wrap=hypotf -Wl,--wrap=cbrtf -Wl,--wrap=fmodf -Wl,--wrap=dremf -Wl,--wrap=remainderf -Wl,--wrap=remquof -Wl,--wrap=expm1f -Wl,--wrap=log1pf -Wl,--wrap=fmaf -Wl,--wrap=memcpy -Wl,--wrap=memset -Wl,--wrap=__aeabi_memcpy -Wl,--wrap=__aeabi_memset -Wl,--wrap=__aeabi_memcpy4 -Wl,--wrap=__aeabi_memset4 -Wl,--wrap=__aeabi_memcpy8 -Wl,--wrap=__aeabi_memset8
|
||||||
|
|
||||||
|
LDFLAGS = $(CFLAGS) $(PICO_LDFLAGS) -Wl,-T,link.ld -Wl,-Map=$@.map -Wl,-cref -Wl,--gc-sections
|
||||||
|
|
||||||
|
# Use toolchain libm if we're not using our own.
|
||||||
|
ifndef INTERNAL_LIBM
|
||||||
|
LIBS += -lm
|
||||||
|
endif
|
||||||
|
|
||||||
|
LDFLAGS += -mthumb -mcpu=cortex-m0plus
|
||||||
|
|
||||||
|
SRC_SDK := \
|
||||||
|
src/common/pico_sync/critical_section.c \
|
||||||
|
src/common/pico_sync/lock_core.c \
|
||||||
|
src/common/pico_sync/mutex.c \
|
||||||
|
src/common/pico_time/time.c \
|
||||||
|
src/common/pico_util/pheap.c \
|
||||||
|
src/rp2_common/hardware_adc/adc.c \
|
||||||
|
src/rp2_common/hardware_claim/claim.c \
|
||||||
|
src/rp2_common/hardware_clocks/clocks.c \
|
||||||
|
src/rp2_common/hardware_dma/dma.c \
|
||||||
|
src/rp2_common/hardware_flash/flash.c \
|
||||||
|
src/rp2_common/hardware_gpio/gpio.c \
|
||||||
|
src/rp2_common/hardware_i2c/i2c.c \
|
||||||
|
src/rp2_common/hardware_irq/irq.c \
|
||||||
|
src/rp2_common/hardware_pio/pio.c \
|
||||||
|
src/rp2_common/hardware_pll/pll.c \
|
||||||
|
src/rp2_common/hardware_spi/spi.c \
|
||||||
|
src/rp2_common/hardware_sync/sync.c \
|
||||||
|
src/rp2_common/hardware_timer/timer.c \
|
||||||
|
src/rp2_common/hardware_uart/uart.c \
|
||||||
|
src/rp2_common/hardware_watchdog/watchdog.c \
|
||||||
|
src/rp2_common/hardware_xosc/xosc.c \
|
||||||
|
src/rp2_common/pico_bootrom/bootrom.c \
|
||||||
|
src/rp2_common/pico_double/double_init_rom.c \
|
||||||
|
src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c \
|
||||||
|
src/rp2_common/pico_float/float_init_rom.c \
|
||||||
|
src/rp2_common/pico_float/float_math.c \
|
||||||
|
src/rp2_common/pico_multicore/multicore.c \
|
||||||
|
src/rp2_common/pico_platform/platform.c \
|
||||||
|
src/rp2_common/pico_printf/printf.c \
|
||||||
|
src/rp2_common/pico_runtime/runtime.c \
|
||||||
|
src/rp2_common/pico_stdio/stdio.c \
|
||||||
|
|
||||||
|
SRC_SDK := $(addprefix sdk/, $(SRC_SDK))
|
||||||
|
|
||||||
|
SRC_C += \
|
||||||
|
boards/$(BOARD)/board.c \
|
||||||
|
boards/$(BOARD)/pins.c \
|
||||||
|
bindings/rp2pio/StateMachine.c \
|
||||||
|
bindings/rp2pio/__init__.c \
|
||||||
|
common-hal/rp2pio/StateMachine.c \
|
||||||
|
common-hal/rp2pio/__init__.c \
|
||||||
|
background.c \
|
||||||
|
peripherals/pins.c \
|
||||||
|
fatfs_port.c \
|
||||||
|
lib/libc/string0.c \
|
||||||
|
lib/mp-readline/readline.c \
|
||||||
|
lib/oofatfs/ff.c \
|
||||||
|
lib/oofatfs/option/ccsbcs.c \
|
||||||
|
lib/timeutils/timeutils.c \
|
||||||
|
lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c \
|
||||||
|
lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c \
|
||||||
|
lib/utils/buffer_helper.c \
|
||||||
|
lib/utils/context_manager_helpers.c \
|
||||||
|
lib/utils/interrupt_char.c \
|
||||||
|
lib/utils/pyexec.c \
|
||||||
|
lib/utils/stdout_helpers.c \
|
||||||
|
lib/utils/sys_stdio_mphal.c \
|
||||||
|
mphalport.c \
|
||||||
|
supervisor/shared/memory.c \
|
||||||
|
|
||||||
|
SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \
|
||||||
|
$(addprefix shared-bindings/, $(SRC_BINDINGS_ENUMS)) \
|
||||||
|
$(addprefix common-hal/, $(SRC_COMMON_HAL))
|
||||||
|
|
||||||
|
SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE)) \
|
||||||
|
$(addprefix shared-module/, $(SRC_SHARED_MODULE)) \
|
||||||
|
$(addprefix shared-module/, $(SRC_SHARED_MODULE_INTERNAL))
|
||||||
|
|
||||||
|
# There may be duplicates between SRC_COMMON_HAL_EXPANDED and SRC_SHARED_MODULE_EXPANDED,
|
||||||
|
# because a few modules have files both in common-hal/ and shared-modules/.
|
||||||
|
# Doing a $(sort ...) removes duplicates as part of sorting.
|
||||||
|
SRC_COMMON_HAL_SHARED_MODULE_EXPANDED = $(sort $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED))
|
||||||
|
|
||||||
|
SRC_S = supervisor/$(CHIP_FAMILY)_cpu.s
|
||||||
|
SRC_S_UPPER = bs2_default_padded_checksummed.S \
|
||||||
|
sdk/src/rp2_common/hardware_divider/divider.S \
|
||||||
|
sdk/src/rp2_common/hardware_irq/irq_handler_chain.S \
|
||||||
|
sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S \
|
||||||
|
sdk/src/rp2_common/pico_double/double_aeabi.S \
|
||||||
|
sdk/src/rp2_common/pico_double/double_v1_rom_shim.S \
|
||||||
|
sdk/src/rp2_common/pico_divider/divider.S \
|
||||||
|
sdk/src/rp2_common/pico_float/float_aeabi.S \
|
||||||
|
sdk/src/rp2_common/pico_float/float_v1_rom_shim.S \
|
||||||
|
sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S \
|
||||||
|
sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S \
|
||||||
|
sdk/src/rp2_common/pico_standard_link/crt0.S \
|
||||||
|
|
||||||
|
OBJ = $(PY_O) $(SUPERVISOR_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SRC_SDK:.c=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SRC_COMMON_HAL_SHARED_MODULE_EXPANDED:.c=.o))
|
||||||
|
ifeq ($(INTERNAL_LIBM),1)
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SRC_LIBM:.c=.o))
|
||||||
|
endif
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SRC_S_UPPER:.S=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SRC_MOD:.c=.o))
|
||||||
|
|
||||||
|
|
||||||
|
SRC_QSTR += $(SRC_C) $(SRC_SUPERVISOR) $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED)
|
||||||
|
|
||||||
|
all: $(BUILD)/firmware.uf2
|
||||||
|
|
||||||
|
$(BUILD)/firmware.elf: $(OBJ) link.ld
|
||||||
|
$(STEPECHO) "LINK $@"
|
||||||
|
$(Q)$(CC) -o $@ $(LDFLAGS) $(OBJ)
|
||||||
|
$(Q)$(SIZE) $@ | $(PYTHON3) $(TOP)/tools/build_memory_info.py link.ld
|
||||||
|
|
||||||
|
$(BUILD)/firmware.bin: $(BUILD)/firmware.elf
|
||||||
|
$(STEPECHO) "Create $@"
|
||||||
|
$(Q)$(OBJCOPY) -O binary $^ $@
|
||||||
|
|
||||||
|
$(BUILD)/firmware.uf2: $(BUILD)/firmware.bin
|
||||||
|
$(STEPECHO) "Create $@"
|
||||||
|
$(Q)$(PYTHON3) $(TOP)/tools/uf2/utils/uf2conv.py -f 0xe48bff56 -b 0x10000000 -c -o $@ $^
|
||||||
|
|
||||||
|
include $(TOP)/py/mkrules.mk
|
||||||
|
|
||||||
|
# Print out the value of a make variable.
|
||||||
|
# https://stackoverflow.com/questions/16467718/how-to-print-out-a-variable-in-makefile
|
||||||
|
print-%:
|
||||||
|
@echo $* = $($*)
|
18
ports/raspberrypi/README.rst
Normal file
18
ports/raspberrypi/README.rst
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
RP2040
|
||||||
|
==================
|
||||||
|
|
||||||
|
This port supports many development boards that utilize RP2040 chips. See
|
||||||
|
https://circuitpython.org/downloads for all supported boards.
|
||||||
|
|
||||||
|
|
||||||
|
Building
|
||||||
|
--------
|
||||||
|
|
||||||
|
For build instructions see this guide: https://learn.adafruit.com/building-circuitpython/
|
||||||
|
|
||||||
|
|
||||||
|
Port Specific modules
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
../../shared-bindings/rp2pio/index
|
44
ports/raspberrypi/background.c
Normal file
44
ports/raspberrypi/background.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
#include "background.h"
|
||||||
|
|
||||||
|
#include "supervisor/filesystem.h"
|
||||||
|
#include "supervisor/shared/tick.h"
|
||||||
|
#include "supervisor/usb.h"
|
||||||
|
|
||||||
|
#include "py/runtime.h"
|
||||||
|
#include "shared-module/network/__init__.h"
|
||||||
|
#include "supervisor/shared/stack.h"
|
||||||
|
#include "supervisor/port.h"
|
||||||
|
|
||||||
|
#if CIRCUITPY_DISPLAYIO
|
||||||
|
#include "shared-module/displayio/__init__.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void port_start_background_task(void) {}
|
||||||
|
void port_finish_background_task(void) {}
|
||||||
|
|
||||||
|
void port_background_task(void) {}
|
32
ports/raspberrypi/background.h
Normal file
32
ports/raspberrypi/background.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MICROPY_INCLUDED_RASPBERRYPI_BACKGROUND_H
|
||||||
|
#define MICROPY_INCLUDED_RASPBERRYPI_BACKGROUND_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#endif // MICROPY_INCLUDED_RASPBERRYPI_BACKGROUND_H
|
449
ports/raspberrypi/bindings/rp2pio/StateMachine.c
Normal file
449
ports/raspberrypi/bindings/rp2pio/StateMachine.c
Normal file
@ -0,0 +1,449 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// This file contains all of the Python API definitions for the
|
||||||
|
// rp2pio.StateMachine class.
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
|
#include "bindings/rp2pio/StateMachine.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/objproperty.h"
|
||||||
|
#include "py/runtime.h"
|
||||||
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
||||||
|
|
||||||
|
//| class StateMachine:
|
||||||
|
//| """A single PIO StateMachine
|
||||||
|
//|
|
||||||
|
//| The programmable I/O peripheral on the RP2 series of microcontrollers is
|
||||||
|
//| unique. It is a collection of generic state machines that can be
|
||||||
|
//| used for a variety of protocols. State machines may be independent or
|
||||||
|
//| coordinated. Program memory and IRQs are shared between the state machines
|
||||||
|
//| in a particular PIO instance. They are independent otherwise.
|
||||||
|
//|
|
||||||
|
//| This class is designed to facilitate sharing of PIO resources. By default,
|
||||||
|
//| it is assumed that the state machine is used on its own and can be placed
|
||||||
|
//| in either PIO. State machines with the same program will be placed in the
|
||||||
|
//| same PIO if possible. To ensure multiple state machines share a PIO use
|
||||||
|
//| the ``colocate`` kwarg during construction and create them one after another."""
|
||||||
|
//|
|
||||||
|
//| def __init__(self,
|
||||||
|
//| program: ReadableBuffer,
|
||||||
|
//| frequency: int,
|
||||||
|
//| *,
|
||||||
|
//| init: Optional[ReadableBuffer] = None,
|
||||||
|
//| first_out_pin: Optional[microcontroller.Pin] = None,
|
||||||
|
//| out_pin_count: int = 1,
|
||||||
|
//| first_in_pin: Optional[microcontroller.Pin] = None,
|
||||||
|
//| in_pin_count: int = 1,
|
||||||
|
//| first_set_pin: Optional[microcontroller.Pin] = None,
|
||||||
|
//| set_pin_count: int = 1,
|
||||||
|
//| first_sideset_pin: Optional[microcontroller.Pin] = None,
|
||||||
|
//| sideset_pin_count: int = 1,
|
||||||
|
//| exclusive_pin_use: bool = True,
|
||||||
|
//| auto_pull: bool = False,
|
||||||
|
//| pull_threshold : int = 32,
|
||||||
|
//| out_shift_right : bool = True,
|
||||||
|
//| auto_push: bool = False,
|
||||||
|
//| push_threshold : int = 32,
|
||||||
|
//| in_shift_right : bool = True) -> None:
|
||||||
|
// //| colocate: Union[int, StateMachine, None] = None
|
||||||
|
//|
|
||||||
|
//| """Construct a StateMachine object on the given pins with the given program.
|
||||||
|
//|
|
||||||
|
//| :param ReadableBuffer program: the program to run with the state machine
|
||||||
|
//| :param int frequency: the target clock frequency of the state machine. Actual may be less.
|
||||||
|
//| :param ReadableBuffer init: a program to run once at start up. This is run after program
|
||||||
|
//| is started so instructions may be intermingled
|
||||||
|
//| :param ~microcontroller.Pin first_out_pin: the first pin to use with the OUT instruction
|
||||||
|
//| :param int out_pin_count: the count of consecutive pins to use with OUT starting at first_out_pin
|
||||||
|
//| :param ~microcontroller.Pin first_in_pin: the first pin to use with the IN instruction
|
||||||
|
//| :param int in_pin_count: the count of consecutive pins to use with IN starting at first_in_pin
|
||||||
|
//| :param ~microcontroller.Pin first_set_pin: the first pin to use with the SET instruction
|
||||||
|
//| :param int set_pin_count: the count of consecutive pins to use with SET starting at first_set_pin
|
||||||
|
//| :param ~microcontroller.Pin first_sideset_pin: the first pin to use with a side set
|
||||||
|
//| :param int sideset_pin_count: the count of consecutive pins to use with a side set starting at first_sideset_pin
|
||||||
|
//| :param bool exclusive_pin_use: When True, do not share any pins with other state machines. Pins are never shared with other peripherals
|
||||||
|
//| :param bool auto_pull: When True, automatically load data from the tx FIFO into the
|
||||||
|
//| output shift register (OSR) when an OUT instruction shifts more than pull_threshold bits
|
||||||
|
//| :param int pull_threshold: Number of bits to shift before loading a new value into the OSR from the tx FIFO
|
||||||
|
//| :param bool out_shift_right: When True, data is shifted out the right side (LSB) of the
|
||||||
|
//| OSR. It is shifted out the left (MSB) otherwise. NOTE! This impacts data alignment
|
||||||
|
//| when the number of bytes is not a power of two (1, 2 or 4 bytes).
|
||||||
|
//| :param bool auto_push: When True, automatically save data from input shift register
|
||||||
|
//| (ISR) into the rx FIFO when an IN instruction shifts more than push_threshold bits
|
||||||
|
//| :param int push_threshold: Number of bits to shift before saving the ISR value to the RX FIFO
|
||||||
|
//| :param bool in_shift_right: When True, data is shifted into the right side (LSB) of the
|
||||||
|
//| ISR. It is shifted into the left (MSB) otherwise. NOTE! This impacts data alignment
|
||||||
|
//| when the number of bytes is not a power of two (1, 2 or 4 bytes)."""
|
||||||
|
//| ...
|
||||||
|
//|
|
||||||
|
|
||||||
|
STATIC mp_obj_t rp2pio_statemachine_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||||
|
rp2pio_statemachine_obj_t *self = m_new_obj(rp2pio_statemachine_obj_t);
|
||||||
|
self->base.type = &rp2pio_statemachine_type;
|
||||||
|
enum { ARG_program, ARG_frequency, ARG_init,
|
||||||
|
ARG_first_out_pin, ARG_out_pin_count,
|
||||||
|
ARG_first_in_pin, ARG_in_pin_count,
|
||||||
|
ARG_first_set_pin, ARG_set_pin_count,
|
||||||
|
ARG_first_sideset_pin, ARG_sideset_pin_count,
|
||||||
|
ARG_exclusive_pin_use,
|
||||||
|
ARG_auto_pull, ARG_pull_threshold, ARG_out_shift_right,
|
||||||
|
ARG_auto_push, ARG_push_threshold, ARG_in_shift_right};
|
||||||
|
static const mp_arg_t allowed_args[] = {
|
||||||
|
{ MP_QSTR_program, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||||
|
{ MP_QSTR_frequency, MP_ARG_REQUIRED | MP_ARG_INT },
|
||||||
|
{ MP_QSTR_init, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
|
||||||
|
{ MP_QSTR_first_out_pin, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
|
||||||
|
{ MP_QSTR_out_pin_count, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} },
|
||||||
|
{ MP_QSTR_first_in_pin, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
|
||||||
|
{ MP_QSTR_in_pin_count, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} },
|
||||||
|
{ MP_QSTR_first_set_pin, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
|
||||||
|
{ MP_QSTR_set_pin_count, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} },
|
||||||
|
{ MP_QSTR_first_sideset_pin, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
|
||||||
|
{ MP_QSTR_sideset_pin_count, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} },
|
||||||
|
{ MP_QSTR_exclusive_pin_use, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = true} },
|
||||||
|
{ MP_QSTR_auto_pull, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = false} },
|
||||||
|
{ MP_QSTR_pull_threshold, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 32} },
|
||||||
|
{ MP_QSTR_out_shift_right, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = true} },
|
||||||
|
{ MP_QSTR_auto_push, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = false} },
|
||||||
|
{ MP_QSTR_push_threshold, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 32} },
|
||||||
|
{ MP_QSTR_in_shift_right, 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, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||||
|
|
||||||
|
mp_buffer_info_t bufinfo;
|
||||||
|
mp_get_buffer_raise(args[ARG_program].u_obj, &bufinfo, MP_BUFFER_READ);
|
||||||
|
|
||||||
|
mp_buffer_info_t init_bufinfo;
|
||||||
|
init_bufinfo.len = 0;
|
||||||
|
mp_get_buffer(args[ARG_init].u_obj, &init_bufinfo, MP_BUFFER_READ);
|
||||||
|
|
||||||
|
// We don't validate pin in use here because we may be ok sharing them within a PIO.
|
||||||
|
mcu_pin_obj_t *first_out_pin = validate_obj_is_pin_or_none(args[ARG_first_out_pin].u_obj);
|
||||||
|
if (args[ARG_out_pin_count].u_int < 1) {
|
||||||
|
mp_raise_ValueError(translate("Pin count must be at least 1"));
|
||||||
|
}
|
||||||
|
mcu_pin_obj_t *first_in_pin = validate_obj_is_pin_or_none(args[ARG_first_in_pin].u_obj);
|
||||||
|
if (args[ARG_in_pin_count].u_int < 1) {
|
||||||
|
mp_raise_ValueError(translate("Pin count must be at least 1"));
|
||||||
|
}
|
||||||
|
mcu_pin_obj_t *first_set_pin = validate_obj_is_pin_or_none(args[ARG_first_set_pin].u_obj);
|
||||||
|
if (args[ARG_set_pin_count].u_int < 1) {
|
||||||
|
mp_raise_ValueError(translate("Pin count must be at least 1"));
|
||||||
|
}
|
||||||
|
if (args[ARG_set_pin_count].u_int > 5) {
|
||||||
|
mp_raise_ValueError(translate("Set pin count must be between 1 and 5"));
|
||||||
|
}
|
||||||
|
mcu_pin_obj_t *first_sideset_pin = validate_obj_is_pin_or_none(args[ARG_first_sideset_pin].u_obj);
|
||||||
|
if (args[ARG_sideset_pin_count].u_int < 1) {
|
||||||
|
mp_raise_ValueError(translate("Pin count must be at least 1"));
|
||||||
|
}
|
||||||
|
if (args[ARG_sideset_pin_count].u_int > 5) {
|
||||||
|
mp_raise_ValueError(translate("Side set pin count must be between 1 and 5"));
|
||||||
|
}
|
||||||
|
|
||||||
|
mp_int_t pull_threshold = args[ARG_pull_threshold].u_int;
|
||||||
|
mp_int_t push_threshold = args[ARG_push_threshold].u_int;
|
||||||
|
if (pull_threshold < 1 || pull_threshold > 32) {
|
||||||
|
mp_raise_ValueError(translate("pull_threshold must be between 1 and 32"));
|
||||||
|
}
|
||||||
|
if (push_threshold < 1 || push_threshold > 32) {
|
||||||
|
mp_raise_ValueError(translate("push_threshold must be between 1 and 32"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bufinfo.len < 2) {
|
||||||
|
mp_raise_ValueError(translate("Program must contain at least one 16-bit instruction."));
|
||||||
|
}
|
||||||
|
if (bufinfo.len % 2 != 0) {
|
||||||
|
mp_raise_ValueError(translate("Program size invalid"));
|
||||||
|
}
|
||||||
|
if (bufinfo.len > 32) {
|
||||||
|
mp_raise_ValueError(translate("Program too large"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (init_bufinfo.len % 2 != 0) {
|
||||||
|
mp_raise_ValueError(translate("Init program size invalid"));
|
||||||
|
}
|
||||||
|
|
||||||
|
common_hal_rp2pio_statemachine_construct(self,
|
||||||
|
bufinfo.buf, bufinfo.len / 2,
|
||||||
|
args[ARG_frequency].u_int,
|
||||||
|
init_bufinfo.buf, init_bufinfo.len / 2,
|
||||||
|
first_out_pin, args[ARG_out_pin_count].u_int,
|
||||||
|
first_in_pin, args[ARG_in_pin_count].u_int,
|
||||||
|
first_set_pin, args[ARG_set_pin_count].u_int,
|
||||||
|
first_sideset_pin, args[ARG_sideset_pin_count].u_int,
|
||||||
|
args[ARG_exclusive_pin_use].u_bool,
|
||||||
|
args[ARG_auto_pull].u_bool, pull_threshold, args[ARG_out_shift_right].u_bool,
|
||||||
|
args[ARG_auto_push].u_bool, push_threshold, args[ARG_in_shift_right].u_bool);
|
||||||
|
return MP_OBJ_FROM_PTR(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
//| def deinit(self) -> None:
|
||||||
|
//| """Turn off the state machine and release its resources."""
|
||||||
|
//| ...
|
||||||
|
//|
|
||||||
|
STATIC mp_obj_t rp2pio_statemachine_obj_deinit(mp_obj_t self_in) {
|
||||||
|
rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||||
|
common_hal_rp2pio_statemachine_deinit(self);
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_deinit_obj, rp2pio_statemachine_obj_deinit);
|
||||||
|
|
||||||
|
//| def __enter__(self) -> StateMachine:
|
||||||
|
//| """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 rp2pio_statemachine_obj___exit__(size_t n_args, const mp_obj_t *args) {
|
||||||
|
(void)n_args;
|
||||||
|
common_hal_rp2pio_statemachine_deinit(args[0]);
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(rp2pio_statemachine_obj___exit___obj, 4, 4, rp2pio_statemachine_obj___exit__);
|
||||||
|
|
||||||
|
|
||||||
|
STATIC void check_for_deinit(rp2pio_statemachine_obj_t *self) {
|
||||||
|
if (common_hal_rp2pio_statemachine_deinited(self)) {
|
||||||
|
raise_deinited_error();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// // | def restart(self, *other_state_machines) -> None:
|
||||||
|
// // | """Restarts this state machine and any others given. They must share
|
||||||
|
// // | an underlying PIO. An exception will be raised otherwise."""
|
||||||
|
// // | ...
|
||||||
|
// // |
|
||||||
|
|
||||||
|
//| def write(self, buffer: ReadableBuffer, *, start: int = 0, end: Optional[int] = None) -> None:
|
||||||
|
//| """Write the data contained in ``buffer`` to the state machine. If the buffer is empty, nothing happens.
|
||||||
|
//|
|
||||||
|
//| :param ~_typing.ReadableBuffer buffer: Write out the data in this buffer
|
||||||
|
//| :param int start: Start of the slice of ``buffer`` to write out: ``buffer[start:end]``
|
||||||
|
//| :param int end: End of the slice; this index is not included. Defaults to ``len(buffer)``"""
|
||||||
|
//| ...
|
||||||
|
//|
|
||||||
|
|
||||||
|
STATIC mp_obj_t rp2pio_statemachine_write(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||||
|
enum { ARG_buffer, ARG_start, ARG_end };
|
||||||
|
static const mp_arg_t allowed_args[] = {
|
||||||
|
{ MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
|
||||||
|
{ MP_QSTR_start, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
|
||||||
|
{ MP_QSTR_end, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = INT_MAX} },
|
||||||
|
};
|
||||||
|
rp2pio_statemachine_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_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||||
|
|
||||||
|
mp_buffer_info_t bufinfo;
|
||||||
|
mp_get_buffer_raise(args[ARG_buffer].u_obj, &bufinfo, MP_BUFFER_READ);
|
||||||
|
int32_t start = args[ARG_start].u_int;
|
||||||
|
size_t length = bufinfo.len;
|
||||||
|
normalize_buffer_bounds(&start, args[ARG_end].u_int, &length);
|
||||||
|
|
||||||
|
if (length == 0) {
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ok = common_hal_rp2pio_statemachine_write(self, ((uint8_t*)bufinfo.buf) + start, length);
|
||||||
|
if (mp_hal_is_interrupted()) {
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
if (!ok) {
|
||||||
|
mp_raise_OSError(MP_EIO);
|
||||||
|
}
|
||||||
|
return mp_const_none;
|
||||||
|
}
|
||||||
|
MP_DEFINE_CONST_FUN_OBJ_KW(rp2pio_statemachine_write_obj, 2, rp2pio_statemachine_write);
|
||||||
|
|
||||||
|
|
||||||
|
// // | def readinto(self, buffer: WriteableBuffer, *, start: int = 0, end: Optional[int] = None) -> None:
|
||||||
|
// // | """Read into ``buffer``. If the number of bytes to read is 0, nothing happens.
|
||||||
|
// // |
|
||||||
|
// // | :param ~_typing.WriteableBuffer buffer: Read data into this buffer
|
||||||
|
// // | :param int start: Start of the slice of ``buffer`` to read into: ``buffer[start:end]``
|
||||||
|
// // | :param int end: End of the slice; this index is not included. Defaults to ``len(buffer)``
|
||||||
|
// // | :param int write_value: Value to write while reading. (Usually ignored.)"""
|
||||||
|
// // | ...
|
||||||
|
// // |
|
||||||
|
|
||||||
|
// STATIC mp_obj_t rp2pio_statemachine_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||||
|
// enum { ARG_buffer, ARG_start, ARG_end, ARG_write_value };
|
||||||
|
// static const mp_arg_t allowed_args[] = {
|
||||||
|
// { MP_QSTR_buffer, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
|
||||||
|
// { MP_QSTR_start, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
|
||||||
|
// { MP_QSTR_end, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = INT_MAX} },
|
||||||
|
// { MP_QSTR_write_value,MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
|
||||||
|
// };
|
||||||
|
// rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
|
||||||
|
// check_for_deinit(self);
|
||||||
|
// check_lock(self);
|
||||||
|
// mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||||
|
// mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||||
|
|
||||||
|
// mp_buffer_info_t bufinfo;
|
||||||
|
// mp_get_buffer_raise(args[ARG_buffer].u_obj, &bufinfo, MP_BUFFER_WRITE);
|
||||||
|
// int32_t start = args[ARG_start].u_int;
|
||||||
|
// size_t length = bufinfo.len;
|
||||||
|
// normalize_buffer_bounds(&start, args[ARG_end].u_int, &length);
|
||||||
|
|
||||||
|
// if (length == 0) {
|
||||||
|
// return mp_const_none;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// bool ok = common_hal_rp2pio_statemachine_read(self, ((uint8_t*)bufinfo.buf) + start, length, args[ARG_write_value].u_int);
|
||||||
|
// if (!ok) {
|
||||||
|
// mp_raise_OSError(MP_EIO);
|
||||||
|
// }
|
||||||
|
// return mp_const_none;
|
||||||
|
// }
|
||||||
|
// MP_DEFINE_CONST_FUN_OBJ_KW(rp2pio_statemachine_readinto_obj, 2, rp2pio_statemachine_readinto);
|
||||||
|
|
||||||
|
// //| def write_readinto(self, buffer_out: ReadableBuffer, buffer_in: WriteableBuffer, *, out_start: int = 0, out_end: Optional[int] = None, in_start: int = 0, in_end: Optional[int] = None) -> None:
|
||||||
|
// //| """Write out the data in ``buffer_out`` while simultaneously reading data into ``buffer_in``.
|
||||||
|
// //| The SPI object must be locked.
|
||||||
|
// //| The lengths of the slices defined by ``buffer_out[out_start:out_end]`` and ``buffer_in[in_start:in_end]``
|
||||||
|
// //| must be equal.
|
||||||
|
// //| If buffer slice lengths are both 0, nothing happens.
|
||||||
|
// //|
|
||||||
|
// //| :param ~_typing.ReadableBuffer buffer_out: Write out the data in this buffer
|
||||||
|
// //| :param ~_typing.WriteableBuffer buffer_in: Read data into this buffer
|
||||||
|
// //| :param int out_start: Start of the slice of buffer_out to write out: ``buffer_out[out_start:out_end]``
|
||||||
|
// //| :param int out_end: End of the slice; this index is not included. Defaults to ``len(buffer_out)``
|
||||||
|
// //| :param int in_start: Start of the slice of ``buffer_in`` to read into: ``buffer_in[in_start:in_end]``
|
||||||
|
// //| :param int in_end: End of the slice; this index is not included. Defaults to ``len(buffer_in)``"""
|
||||||
|
// //| ...
|
||||||
|
// //|
|
||||||
|
|
||||||
|
// STATIC mp_obj_t rp2pio_statemachine_write_readinto(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||||
|
// enum { ARG_buffer_out, ARG_buffer_in, ARG_out_start, ARG_out_end, ARG_in_start, ARG_in_end };
|
||||||
|
// static const mp_arg_t allowed_args[] = {
|
||||||
|
// { MP_QSTR_buffer_out, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
|
||||||
|
// { MP_QSTR_buffer_in, MP_ARG_REQUIRED | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
|
||||||
|
// { MP_QSTR_out_start, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
|
||||||
|
// { MP_QSTR_out_end, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = INT_MAX} },
|
||||||
|
// { MP_QSTR_in_start, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
|
||||||
|
// { MP_QSTR_in_end, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = INT_MAX} },
|
||||||
|
// };
|
||||||
|
// rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
|
||||||
|
// check_for_deinit(self);
|
||||||
|
// check_lock(self);
|
||||||
|
// mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||||
|
// mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||||
|
|
||||||
|
// mp_buffer_info_t buf_out_info;
|
||||||
|
// mp_get_buffer_raise(args[ARG_buffer_out].u_obj, &buf_out_info, MP_BUFFER_READ);
|
||||||
|
// int32_t out_start = args[ARG_out_start].u_int;
|
||||||
|
// size_t out_length = buf_out_info.len;
|
||||||
|
// normalize_buffer_bounds(&out_start, args[ARG_out_end].u_int, &out_length);
|
||||||
|
|
||||||
|
// mp_buffer_info_t buf_in_info;
|
||||||
|
// mp_get_buffer_raise(args[ARG_buffer_in].u_obj, &buf_in_info, MP_BUFFER_WRITE);
|
||||||
|
// int32_t in_start = args[ARG_in_start].u_int;
|
||||||
|
// size_t in_length = buf_in_info.len;
|
||||||
|
// normalize_buffer_bounds(&in_start, args[ARG_in_end].u_int, &in_length);
|
||||||
|
|
||||||
|
// if (out_length != in_length) {
|
||||||
|
// mp_raise_ValueError(translate("buffer slices must be of equal length"));
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (out_length == 0) {
|
||||||
|
// return mp_const_none;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// bool ok = common_hal_rp2pio_statemachine_transfer(self,
|
||||||
|
// ((uint8_t*)buf_out_info.buf) + out_start,
|
||||||
|
// ((uint8_t*)buf_in_info.buf) + in_start,
|
||||||
|
// out_length);
|
||||||
|
// if (!ok) {
|
||||||
|
// mp_raise_OSError(MP_EIO);
|
||||||
|
// }
|
||||||
|
// return mp_const_none;
|
||||||
|
// }
|
||||||
|
// MP_DEFINE_CONST_FUN_OBJ_KW(rp2pio_statemachine_write_readinto_obj, 2, rp2pio_statemachine_write_readinto);
|
||||||
|
|
||||||
|
//| frequency: int
|
||||||
|
//| """The actual state machine frequency. This may not match the frequency requested
|
||||||
|
//| due to internal limitations."""
|
||||||
|
//|
|
||||||
|
|
||||||
|
STATIC mp_obj_t rp2pio_statemachine_obj_get_frequency(mp_obj_t self_in) {
|
||||||
|
rp2pio_statemachine_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||||
|
check_for_deinit(self);
|
||||||
|
return MP_OBJ_NEW_SMALL_INT(common_hal_rp2pio_statemachine_get_frequency(self));
|
||||||
|
}
|
||||||
|
MP_DEFINE_CONST_FUN_OBJ_1(rp2pio_statemachine_get_frequency_obj, rp2pio_statemachine_obj_get_frequency);
|
||||||
|
|
||||||
|
const mp_obj_property_t rp2pio_statemachine_frequency_obj = {
|
||||||
|
.base.type = &mp_type_property,
|
||||||
|
.proxy = {(mp_obj_t)&rp2pio_statemachine_get_frequency_obj,
|
||||||
|
(mp_obj_t)&mp_const_none_obj,
|
||||||
|
(mp_obj_t)&mp_const_none_obj},
|
||||||
|
};
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t rp2pio_statemachine_locals_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&rp2pio_statemachine_deinit_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&rp2pio_statemachine_obj___exit___obj) },
|
||||||
|
|
||||||
|
// { MP_ROM_QSTR(MP_QSTR_restart), MP_ROM_PTR(&rp2pio_statemachine_configure_obj) },
|
||||||
|
|
||||||
|
// { MP_ROM_QSTR(MP_QSTR_readinto), MP_ROM_PTR(&rp2pio_statemachine_readinto_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&rp2pio_statemachine_write_obj) },
|
||||||
|
// { MP_ROM_QSTR(MP_QSTR_write_readinto), MP_ROM_PTR(&rp2pio_statemachine_write_readinto_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_PTR(&rp2pio_statemachine_frequency_obj) }
|
||||||
|
};
|
||||||
|
STATIC MP_DEFINE_CONST_DICT(rp2pio_statemachine_locals_dict, rp2pio_statemachine_locals_dict_table);
|
||||||
|
|
||||||
|
const mp_obj_type_t rp2pio_statemachine_type = {
|
||||||
|
{ &mp_type_type },
|
||||||
|
.name = MP_QSTR_StateMachine,
|
||||||
|
.make_new = rp2pio_statemachine_make_new,
|
||||||
|
.locals_dict = (mp_obj_dict_t*)&rp2pio_statemachine_locals_dict,
|
||||||
|
};
|
||||||
|
|
||||||
|
rp2pio_statemachine_obj_t *validate_obj_is_statemachine(mp_obj_t obj) {
|
||||||
|
if (!MP_OBJ_IS_TYPE(obj, &rp2pio_statemachine_type)) {
|
||||||
|
mp_raise_TypeError_varg(translate("Expected a %q"), rp2pio_statemachine_type.name);
|
||||||
|
}
|
||||||
|
return MP_OBJ_TO_PTR(obj);
|
||||||
|
}
|
71
ports/raspberrypi/bindings/rp2pio/StateMachine.h
Normal file
71
ports/raspberrypi/bindings/rp2pio/StateMachine.h
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MICROPY_INCLUDED_RASPBERRYPI_BINDINGS_RP2PIO_STATEMACHINE_H
|
||||||
|
#define MICROPY_INCLUDED_RASPBERRYPI_BINDINGS_RP2PIO_STATEMACHINE_H
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
|
||||||
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
|
#include "common-hal/rp2pio/StateMachine.h"
|
||||||
|
|
||||||
|
// Type object used in Python. Should be shared between ports.
|
||||||
|
extern const mp_obj_type_t rp2pio_statemachine_type;
|
||||||
|
|
||||||
|
// Construct an underlying SPI object.
|
||||||
|
extern void common_hal_rp2pio_statemachine_construct(rp2pio_statemachine_obj_t *self,
|
||||||
|
const uint16_t* program, size_t program_len,
|
||||||
|
size_t frequency,
|
||||||
|
const uint16_t* init, size_t init_len,
|
||||||
|
const mcu_pin_obj_t * first_out_pin, uint8_t out_pin_count,
|
||||||
|
const mcu_pin_obj_t * first_in_pin, uint8_t in_pin_count,
|
||||||
|
const mcu_pin_obj_t * first_set_pin, uint8_t set_pin_count,
|
||||||
|
const mcu_pin_obj_t * first_sideset_pin, uint8_t sideset_pin_count,
|
||||||
|
bool exclusive_pin_use,
|
||||||
|
bool auto_pull, uint8_t pull_threshold, bool out_shift_right,
|
||||||
|
bool auto_push, uint8_t push_threshold, bool in_shift_right);
|
||||||
|
|
||||||
|
extern void common_hal_rp2pio_statemachine_deinit(rp2pio_statemachine_obj_t *self);
|
||||||
|
extern bool common_hal_rp2pio_statemachine_deinited(rp2pio_statemachine_obj_t *self);
|
||||||
|
|
||||||
|
// Writes out the given data.
|
||||||
|
extern bool common_hal_rp2pio_statemachine_write(rp2pio_statemachine_obj_t *self, const uint8_t *data, size_t len);
|
||||||
|
|
||||||
|
// // Reads in len bytes while outputting zeroes.
|
||||||
|
// extern bool common_hal_rp2pio_statemachine_read(rp2pio_statemachine_obj_t *self, uint8_t *data, size_t len, uint8_t write_value);
|
||||||
|
|
||||||
|
// // Reads and write len bytes simultaneously.
|
||||||
|
// extern bool common_hal_rp2pio_statemachine_transfer(rp2pio_statemachine_obj_t *self,
|
||||||
|
// const uint8_t *data_out, size_t out_len,
|
||||||
|
// uint8_t *data_in, size_t in_len);
|
||||||
|
|
||||||
|
// Return actual SPI bus frequency.
|
||||||
|
uint32_t common_hal_rp2pio_statemachine_get_frequency(rp2pio_statemachine_obj_t* self);
|
||||||
|
|
||||||
|
// This is used by the supervisor to claim SPI devices indefinitely.
|
||||||
|
// extern void common_hal_rp2pio_statemachine_never_reset(rp2pio_statemachine_obj_t *self);
|
||||||
|
|
||||||
|
#endif // MICROPY_INCLUDED_RASPBERRYPI_BINDINGS_RP2PIO_STATEMACHINE_H
|
45
ports/raspberrypi/bindings/rp2pio/__init__.c
Normal file
45
ports/raspberrypi/bindings/rp2pio/__init__.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "py/runtime.h"
|
||||||
|
|
||||||
|
#include "bindings/rp2pio/StateMachine.h"
|
||||||
|
|
||||||
|
//| """Hardware interface to RP2 series' programmable IO (PIO) peripheral."""
|
||||||
|
//|
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t rp2pio_module_globals_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_rp2pio) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_StateMachine), MP_ROM_PTR(&rp2pio_statemachine_type) },
|
||||||
|
};
|
||||||
|
|
||||||
|
STATIC MP_DEFINE_CONST_DICT(rp2pio_module_globals, rp2pio_module_globals_table);
|
||||||
|
|
||||||
|
const mp_obj_module_t rp2pio_module = {
|
||||||
|
.base = { &mp_type_module },
|
||||||
|
.globals = (mp_obj_dict_t*)&rp2pio_module_globals,
|
||||||
|
};
|
44
ports/raspberrypi/boards/adafruit_feather_rp2040/board.c
Normal file
44
ports/raspberrypi/boards/adafruit_feather_rp2040/board.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "supervisor/board.h"
|
||||||
|
|
||||||
|
#include "shared-bindings/microcontroller/Pin.h"
|
||||||
|
#include "src/rp2_common/hardware_gpio/include/hardware/gpio.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
common_hal_never_reset_pin(&pin_GPIO17);
|
||||||
|
gpio_init(17);
|
||||||
|
gpio_set_dir(17, GPIO_OUT);
|
||||||
|
gpio_put(17, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "Adafruit Feather RP2040"
|
||||||
|
#define MICROPY_HW_MCU_NAME "rp2040"
|
||||||
|
|
||||||
|
#define MICROPY_HW_NEOPIXEL (&pin_GPIO16)
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO3)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO2)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO18)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO19)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO20)
|
||||||
|
|
||||||
|
// #define DEFAULT_UART_BUS_RX (&pin_PA11)
|
||||||
|
// #define DEFAULT_UART_BUS_TX (&pin_PA10)
|
@ -0,0 +1,9 @@
|
|||||||
|
USB_VID = 0x239A
|
||||||
|
USB_PID = 0x80F2
|
||||||
|
USB_PRODUCT = "Feather RP2040"
|
||||||
|
USB_MANUFACTURER = "Adafruit"
|
||||||
|
|
||||||
|
CHIP_VARIANT = RP2040
|
||||||
|
CHIP_FAMILY = rp2
|
||||||
|
|
||||||
|
INTERNAL_FLASH_FILESYSTEM = 1
|
36
ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c
Normal file
36
ports/raspberrypi/boards/adafruit_feather_rp2040/pins.c
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_GPIO29) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_GPIO24) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_GPIO25) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO1) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO1) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO0) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO0) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO4) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO2) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO3) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_GPIO5) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_GPIO6) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_GPIO9) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_GPIO10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_GPIO11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO13) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_POWER), MP_ROM_PTR(&pin_GPIO17) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
// { MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
38
ports/raspberrypi/boards/raspberry_pi_pico/board.c
Normal file
38
ports/raspberrypi/boards/raspberry_pi_pico/board.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "supervisor/board.h"
|
||||||
|
|
||||||
|
void board_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
15
ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h
Normal file
15
ports/raspberrypi/boards/raspberry_pi_pico/mpconfigboard.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// LEDs
|
||||||
|
// #define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||||
|
|
||||||
|
#define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico"
|
||||||
|
#define MICROPY_HW_MCU_NAME "rp2040"
|
||||||
|
|
||||||
|
// #define DEFAULT_I2C_BUS_SCL (&pin_PA23)
|
||||||
|
// #define DEFAULT_I2C_BUS_SDA (&pin_PA22)
|
||||||
|
|
||||||
|
// #define DEFAULT_SPI_BUS_SCK (&pin_PB11)
|
||||||
|
// #define DEFAULT_SPI_BUS_MOSI (&pin_PB10)
|
||||||
|
// #define DEFAULT_SPI_BUS_MISO (&pin_PA12)
|
||||||
|
|
||||||
|
// #define DEFAULT_UART_BUS_RX (&pin_PA11)
|
||||||
|
// #define DEFAULT_UART_BUS_TX (&pin_PA10)
|
@ -0,0 +1,9 @@
|
|||||||
|
USB_VID = 0x239A
|
||||||
|
USB_PID = 0x80F4
|
||||||
|
USB_PRODUCT = "Pico"
|
||||||
|
USB_MANUFACTURER = "Raspberry Pi"
|
||||||
|
|
||||||
|
CHIP_VARIANT = RP2040
|
||||||
|
CHIP_FAMILY = rp2
|
||||||
|
|
||||||
|
INTERNAL_FLASH_FILESYSTEM = 1
|
39
ports/raspberrypi/boards/raspberry_pi_pico/pins.c
Normal file
39
ports/raspberrypi/boards/raspberry_pi_pico/pins.c
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP0), MP_ROM_PTR(&pin_GPIO0) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP1), MP_ROM_PTR(&pin_GPIO1) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP2), MP_ROM_PTR(&pin_GPIO2) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP3), MP_ROM_PTR(&pin_GPIO3) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP4), MP_ROM_PTR(&pin_GPIO4) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP5), MP_ROM_PTR(&pin_GPIO5) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP6), MP_ROM_PTR(&pin_GPIO6) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP7), MP_ROM_PTR(&pin_GPIO7) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP8), MP_ROM_PTR(&pin_GPIO8) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP9), MP_ROM_PTR(&pin_GPIO9) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP10), MP_ROM_PTR(&pin_GPIO10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP11), MP_ROM_PTR(&pin_GPIO11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP12), MP_ROM_PTR(&pin_GPIO12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP13), MP_ROM_PTR(&pin_GPIO13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP14), MP_ROM_PTR(&pin_GPIO14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP15), MP_ROM_PTR(&pin_GPIO15) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP16), MP_ROM_PTR(&pin_GPIO16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP17), MP_ROM_PTR(&pin_GPIO17) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP18), MP_ROM_PTR(&pin_GPIO18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP19), MP_ROM_PTR(&pin_GPIO19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP20), MP_ROM_PTR(&pin_GPIO20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP21), MP_ROM_PTR(&pin_GPIO21) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP22), MP_ROM_PTR(&pin_GPIO22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_GPIO25) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP25), MP_ROM_PTR(&pin_GPIO25) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP26_A0), MP_ROM_PTR(&pin_GPIO26) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP26), MP_ROM_PTR(&pin_GPIO26) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO26) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP27_A1), MP_ROM_PTR(&pin_GPIO27) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP27), MP_ROM_PTR(&pin_GPIO27) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO27) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP28_A2), MP_ROM_PTR(&pin_GPIO28) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GP28), MP_ROM_PTR(&pin_GPIO28) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_GPIO28) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
20
ports/raspberrypi/bs2_default_padded_checksummed.S
Normal file
20
ports/raspberrypi/bs2_default_padded_checksummed.S
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Padded and checksummed version of: /Users/graham/dev/mu/pico_sdk/cmake-build-debug-mu/src/rp2_common/boot_stage2/bs2_default.bin
|
||||||
|
|
||||||
|
.section .boot2, "a"
|
||||||
|
|
||||||
|
.byte 0x00, 0xb5, 0x2f, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21, 0x88, 0x43, 0x98, 0x60
|
||||||
|
.byte 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2b, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x02, 0x21, 0x59, 0x61
|
||||||
|
.byte 0x01, 0x21, 0xf0, 0x22, 0x99, 0x50, 0x28, 0x49, 0x19, 0x60, 0x01, 0x21, 0x99, 0x60, 0x35, 0x20
|
||||||
|
.byte 0x00, 0xf0, 0x3e, 0xf8, 0x02, 0x22, 0x90, 0x42, 0x14, 0xd0, 0x06, 0x21, 0x19, 0x66, 0x00, 0xf0
|
||||||
|
.byte 0x2e, 0xf8, 0x19, 0x6e, 0x01, 0x21, 0x19, 0x66, 0x00, 0x20, 0x18, 0x66, 0x1a, 0x66, 0x00, 0xf0
|
||||||
|
.byte 0x26, 0xf8, 0x19, 0x6e, 0x19, 0x6e, 0x19, 0x6e, 0x05, 0x20, 0x00, 0xf0, 0x29, 0xf8, 0x01, 0x21
|
||||||
|
.byte 0x08, 0x42, 0xf9, 0xd1, 0x00, 0x21, 0x99, 0x60, 0x18, 0x49, 0x19, 0x60, 0x00, 0x21, 0x59, 0x60
|
||||||
|
.byte 0x17, 0x49, 0x18, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60, 0xeb, 0x21, 0x19, 0x66, 0xa0, 0x21
|
||||||
|
.byte 0x19, 0x66, 0x00, 0xf0, 0x0c, 0xf8, 0x00, 0x21, 0x99, 0x60, 0x13, 0x49, 0x11, 0x48, 0x01, 0x60
|
||||||
|
.byte 0x01, 0x21, 0x99, 0x60, 0x01, 0xbc, 0x00, 0x28, 0x00, 0xd1, 0x10, 0x48, 0x00, 0x47, 0x03, 0xb5
|
||||||
|
.byte 0x99, 0x6a, 0x04, 0x20, 0x01, 0x42, 0xfb, 0xd0, 0x01, 0x20, 0x01, 0x42, 0xf8, 0xd1, 0x03, 0xbd
|
||||||
|
.byte 0x02, 0xb5, 0x18, 0x66, 0x18, 0x66, 0xff, 0xf7, 0xf2, 0xff, 0x18, 0x6e, 0x18, 0x6e, 0x02, 0xbd
|
||||||
|
.byte 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x5f, 0x00
|
||||||
|
.byte 0x21, 0x22, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x18, 0x22, 0x20, 0x00, 0xa0, 0x01, 0x01, 0x00, 0x10
|
||||||
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x27, 0x2a, 0x60
|
73
ports/raspberrypi/common-hal/analogio/AnalogIn.c
Normal file
73
ports/raspberrypi/common-hal/analogio/AnalogIn.c
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common-hal/analogio/AnalogIn.h"
|
||||||
|
#include "py/runtime.h"
|
||||||
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
||||||
|
#include "src/rp2_common/hardware_adc/include/hardware/adc.h"
|
||||||
|
|
||||||
|
#define ADC_FIRST_PIN_NUMBER 26
|
||||||
|
#define ADC_PIN_COUNT 4
|
||||||
|
|
||||||
|
void common_hal_analogio_analogin_construct(analogio_analogin_obj_t *self, const mcu_pin_obj_t *pin) {
|
||||||
|
if (pin->number < ADC_FIRST_PIN_NUMBER || pin->number > ADC_FIRST_PIN_NUMBER + ADC_PIN_COUNT) {
|
||||||
|
mp_raise_ValueError(translate("Pin does not have ADC capabilities"));
|
||||||
|
}
|
||||||
|
|
||||||
|
adc_init();
|
||||||
|
|
||||||
|
adc_gpio_init(pin->number);
|
||||||
|
|
||||||
|
claim_pin(pin);
|
||||||
|
self->pin = pin;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool common_hal_analogio_analogin_deinited(analogio_analogin_obj_t *self) {
|
||||||
|
return self->pin == NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) {
|
||||||
|
if (common_hal_analogio_analogin_deinited(self)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
reset_pin_number(self->pin->number);
|
||||||
|
self->pin = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
|
||||||
|
adc_select_input(self->pin->number - ADC_FIRST_PIN_NUMBER);
|
||||||
|
uint16_t value = adc_read();
|
||||||
|
|
||||||
|
// Map value to from 12 to 16 bits
|
||||||
|
return (value << 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
float common_hal_analogio_analogin_get_reference_voltage(analogio_analogin_obj_t *self) {
|
||||||
|
// The nominal VCC voltage
|
||||||
|
return 3.3f;
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user