Merge pull request #36 from adafruit/main

UPdate from adafruit main
This commit is contained in:
DavePutz 2020-12-28 09:13:37 -06:00 committed by GitHub
commit 9c14593d62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
102 changed files with 1928 additions and 400 deletions

View File

@ -35,6 +35,7 @@ jobs:
python-version: 3.8
- name: Install deps
run: |
sudo apt-get update
sudo apt-get install -y eatmydata
sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64 latexmk texlive-fonts-recommended texlive-latex-recommended texlive-latex-extra
pip install requests sh click setuptools cpp-coveralls "Sphinx<4" sphinx-rtd-theme recommonmark sphinx-autoapi sphinxcontrib-svg2pdfconverter polib pyyaml astroid isort black awscli mypy
@ -42,6 +43,32 @@ jobs:
run: |
gcc --version
python3 --version
- name: Translations
run: make check-translate
- name: New boards check
run: python3 -u ci_new_boards_check.py
working-directory: tools
- name: Duplicate USB VID/PID Check
run: python3 -u -m tools.ci_check_duplicate_usb_vid_pid
- name: Build and Validate Stubs
run: make check-stubs -j2
- uses: actions/upload-artifact@v2
with:
name: stubs
path: circuitpython-stubs*
- name: Test Documentation Build (HTML)
run: sphinx-build -E -W -b html -D version=${{ env.CP_VERSION }} -D release=${{ env.CP_VERSION }} . _build/html
- uses: actions/upload-artifact@v2
with:
name: docs
path: _build/html
- name: Test Documentation Build (LaTeX/PDF)
run: |
make latexpdf
- uses: actions/upload-artifact@v2
with:
name: docs
path: _build/latex
- name: Build mpy-cross
run: make -C mpy-cross -j2
- name: Build unix port
@ -67,32 +94,6 @@ jobs:
- name: mpy Tests
run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --via-mpy -d basics float
working-directory: tests
- name: Build and Validate Stubs
run: make check-stubs -j2
- uses: actions/upload-artifact@v2
with:
name: stubs
path: circuitpython-stubs*
- name: Test Documentation Build (HTML)
run: sphinx-build -E -W -b html -D version=${{ env.CP_VERSION }} -D release=${{ env.CP_VERSION }} . _build/html
- uses: actions/upload-artifact@v2
with:
name: docs
path: _build/html
- name: Test Documentation Build (LaTeX/PDF)
run: |
make latexpdf
- uses: actions/upload-artifact@v2
with:
name: docs
path: _build/latex
- name: Translations
run: make check-translate
- name: New boards check
run: python3 -u ci_new_boards_check.py
working-directory: tools
- name: Duplicate USB VID/PID Check
run: python3 -u -m tools.ci_check_duplicate_usb_vid_pid
- name: Build mpy-cross.static-raspbian
run: make -C mpy-cross -j2 -f Makefile.static-raspbian
- uses: actions/upload-artifact@v2
@ -184,6 +185,7 @@ jobs:
- "arduino_nano_33_iot"
- "arduino_zero"
- "bast_pro_mini_m0"
- "bastble"
- "bdmicro_vina_d21"
- "bdmicro_vina_d51"
- "bless_dev_board_multi_sensor"
@ -310,6 +312,7 @@ jobs:
- "sparkfun_samd21_mini"
- "sparkfun_samd51_thing_plus"
- "spresense"
- "stackrduino_m0_pro"
- "stm32f411ce_blackpill"
- "stm32f411ve_discovery"
- "stm32f412zg_discovery"
@ -342,8 +345,8 @@ jobs:
run: |
sudo apt-get install -y gettext
pip install requests sh click setuptools awscli
wget https://adafruit-circuit-python.s3.amazonaws.com/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
sudo tar -C /usr --strip-components=1 -xaf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
wget --no-verbose https://adafruit-circuit-python.s3.amazonaws.com/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
sudo tar -C /usr --strip-components=1 -xaf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- name: Versions
run: |
gcc --version

View File

@ -61,7 +61,7 @@ STATIC struct {
typedef struct __packed {
uint8_t properties;
uint16_t value_handle;
uint8_t uuid[0]; // 2 or 16 bytes
uint8_t uuid[]; // 2 or 16 bytes
} characteristic_declaration_t;
STATIC uint8_t bleio_properties_to_ble_spec_properties(uint8_t bleio_properties) {
@ -1010,21 +1010,22 @@ void process_read_group_req(uint16_t conn_handle, uint16_t mtu, uint8_t dlen, ui
}
int att_read_group_req(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle, uint16_t uuid, uint8_t response_buffer[]) {
struct __packed {
typedef struct __packed {
struct bt_att_hdr h;
struct bt_att_read_group_req r;
} req = { {
.code = BT_ATT_OP_READ_GROUP_REQ,
}, {
.start_handle = start_handle,
.end_handle = end_handle,
}
};
req.r.uuid[0] = uuid & 0xff;
req.r.uuid[1] = uuid >> 8;
} req_t;
uint8_t req_bytes[sizeof(req_t) + sizeof(uuid)];
req_t *req = (req_t *) req_bytes;
return send_req_wait_for_rsp(conn_handle, sizeof(req), (uint8_t *) &req, response_buffer);
req->h.code = BT_ATT_OP_READ_GROUP_REQ;
req->r.start_handle = start_handle;
req->r.end_handle = end_handle;
req->r.uuid[0] = uuid & 0xff;
req->r.uuid[1] = uuid >> 8;
return send_req_wait_for_rsp(conn_handle, sizeof(req_bytes), req_bytes, response_buffer);
}
STATIC void process_read_group_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) {
@ -1305,20 +1306,21 @@ STATIC void process_read_type_req(uint16_t conn_handle, uint16_t mtu, uint8_t dl
}
int att_read_type_req(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle, uint16_t type, uint8_t response_buffer[]) {
struct __packed {
typedef struct __packed {
struct bt_att_hdr h;
struct bt_att_read_type_req r;
} req = { {
.code = BT_ATT_OP_READ_TYPE_REQ,
}, {
.start_handle = start_handle,
.end_handle = end_handle,
}
};
req.r.uuid[0] = type & 0xff;
req.r.uuid[1] = type >> 8;
} req_t;
return send_req_wait_for_rsp(conn_handle, sizeof(req), (uint8_t *) &req, response_buffer);
uint8_t req_bytes[sizeof(req_t) + sizeof(type)];
req_t *req = (req_t *) req_bytes;
req->h.code = BT_ATT_OP_READ_TYPE_REQ;
req->r.start_handle = start_handle;
req->r.end_handle = end_handle;
req->r.uuid[0] = type & 0xff;
req->r.uuid[1] = type >> 8;
return send_req_wait_for_rsp(conn_handle, sizeof(req_bytes), req_bytes, response_buffer);
}
STATIC void process_read_type_rsp(uint16_t conn_handle, uint8_t dlen, uint8_t data[]) {

View File

@ -69,7 +69,7 @@ struct bt_att_info_128 {
#define BT_ATT_OP_FIND_INFO_RSP 0x05
struct bt_att_find_info_rsp {
uint8_t format;
uint8_t info[0];
uint8_t info[];
} __packed;
/* Find By Type Value Request */
@ -78,7 +78,7 @@ struct bt_att_find_type_req {
uint16_t start_handle;
uint16_t end_handle;
uint16_t type;
uint8_t value[0];
uint8_t value[];
} __packed;
struct bt_att_handle_group {
@ -89,7 +89,8 @@ struct bt_att_handle_group {
/* Find By Type Value Response */
#define BT_ATT_OP_FIND_TYPE_RSP 0x07
struct bt_att_find_type_rsp {
struct bt_att_handle_group list[0];
uint8_t _dummy[0];
struct bt_att_handle_group list[];
} __packed;
/* Read By Type Request */
@ -97,19 +98,19 @@ struct bt_att_find_type_rsp {
struct bt_att_read_type_req {
uint16_t start_handle;
uint16_t end_handle;
uint8_t uuid[0];
uint8_t uuid[];
} __packed;
struct bt_att_data {
uint16_t handle;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Read By Type Response */
#define BT_ATT_OP_READ_TYPE_RSP 0x09
struct bt_att_read_type_rsp {
uint8_t len;
struct bt_att_data data[0];
struct bt_att_data data[];
} __packed;
/* Read Request */
@ -121,7 +122,8 @@ struct bt_att_read_req {
/* Read Response */
#define BT_ATT_OP_READ_RSP 0x0b
struct bt_att_read_rsp {
uint8_t value[0];
uint8_t _dummy[0];
uint8_t value[];
} __packed;
/* Read Blob Request */
@ -134,7 +136,8 @@ struct bt_att_read_blob_req {
/* Read Blob Response */
#define BT_ATT_OP_READ_BLOB_RSP 0x0d
struct bt_att_read_blob_rsp {
uint8_t value[0];
uint8_t _dummy[0];
uint8_t value[];
} __packed;
/* Read Multiple Request */
@ -142,13 +145,15 @@ struct bt_att_read_blob_rsp {
#define BT_ATT_OP_READ_MULT_REQ 0x0e
struct bt_att_read_mult_req {
uint16_t handles[0];
uint8_t _dummy[0];
uint16_t handles[];
} __packed;
/* Read Multiple Respose */
#define BT_ATT_OP_READ_MULT_RSP 0x0f
struct bt_att_read_mult_rsp {
uint8_t value[0];
uint8_t _dummy[0];
uint8_t value[];
} __packed;
/* Read by Group Type Request */
@ -156,27 +161,27 @@ struct bt_att_read_mult_rsp {
struct bt_att_read_group_req {
uint16_t start_handle;
uint16_t end_handle;
uint8_t uuid[0];
uint8_t uuid[];
} __packed;
struct bt_att_group_data {
uint16_t start_handle;
uint16_t end_handle;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Read by Group Type Response */
#define BT_ATT_OP_READ_GROUP_RSP 0x11
struct bt_att_read_group_rsp {
uint8_t len;
struct bt_att_group_data data[0];
struct bt_att_group_data data[];
} __packed;
/* Write Request */
#define BT_ATT_OP_WRITE_REQ 0x12
struct bt_att_write_req {
uint16_t handle;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Write Response */
@ -187,7 +192,7 @@ struct bt_att_write_req {
struct bt_att_prepare_write_req {
uint16_t handle;
uint16_t offset;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Prepare Write Respond */
@ -195,7 +200,7 @@ struct bt_att_prepare_write_req {
struct bt_att_prepare_write_rsp {
uint16_t handle;
uint16_t offset;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Execute Write Request */
@ -214,14 +219,14 @@ struct bt_att_exec_write_req {
#define BT_ATT_OP_NOTIFY 0x1b
struct bt_att_notify {
uint16_t handle;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Handle Value Indication */
#define BT_ATT_OP_INDICATE 0x1d
struct bt_att_indicate {
uint16_t handle;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Handle Value Confirm */
@ -233,14 +238,15 @@ struct bt_att_signature {
#define BT_ATT_OP_READ_MULT_VL_REQ 0x20
struct bt_att_read_mult_vl_req {
uint16_t handles[0];
uint8_t _dummy[0];
uint16_t handles[];
} __packed;
/* Read Multiple Respose */
#define BT_ATT_OP_READ_MULT_VL_RSP 0x21
struct bt_att_read_mult_vl_rsp {
uint16_t len;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Handle Multiple Value Notification */
@ -248,19 +254,19 @@ struct bt_att_read_mult_vl_rsp {
struct bt_att_notify_mult {
uint16_t handle;
uint16_t len;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Write Command */
#define BT_ATT_OP_WRITE_CMD 0x52
struct bt_att_write_cmd {
uint16_t handle;
uint8_t value[0];
uint8_t value[];
} __packed;
/* Signed Write Command */
#define BT_ATT_OP_SIGNED_WRITE_CMD 0xd2
struct bt_att_signed_write_cmd {
uint16_t handle;
uint8_t value[0];
uint8_t value[];
} __packed;

View File

@ -454,7 +454,7 @@ struct bt_hci_handle_count {
#define BT_HCI_OP_HOST_NUM_COMPLETED_PACKETS BT_OP(BT_OGF_BASEBAND, 0x0035)
struct bt_hci_cp_host_num_completed_packets {
uint8_t num_handles;
struct bt_hci_handle_count h[0];
struct bt_hci_handle_count h[];
} __packed;
#define BT_HCI_OP_WRITE_INQUIRY_MODE BT_OP(BT_OGF_BASEBAND, 0x0045)
@ -1099,7 +1099,7 @@ struct bt_hci_ext_adv_set {
struct bt_hci_cp_le_set_ext_adv_enable {
uint8_t enable;
uint8_t set_num;
struct bt_hci_ext_adv_set s[0];
struct bt_hci_ext_adv_set s[];
} __packed;
#define BT_HCI_OP_LE_READ_MAX_ADV_DATA_LEN BT_OP(BT_OGF_LE, 0x003a)
@ -1158,7 +1158,7 @@ struct bt_hci_cp_le_set_ext_scan_param {
uint8_t own_addr_type;
uint8_t filter_policy;
uint8_t phys;
struct bt_hci_ext_scan_phy p[0];
struct bt_hci_ext_scan_phy p[];
} __packed;
/* Extends BT_HCI_LE_SCAN_FILTER_DUP */
@ -1189,7 +1189,7 @@ struct bt_hci_cp_le_ext_create_conn {
uint8_t own_addr_type;
bt_addr_le_t peer_addr;
uint8_t phys;
struct bt_hci_ext_conn_phy p[0];
struct bt_hci_ext_conn_phy p[];
} __packed;
#define BT_HCI_OP_LE_PER_ADV_CREATE_SYNC BT_OP(BT_OGF_LE, 0x0044)
@ -1354,7 +1354,7 @@ struct bt_hci_evt_role_change {
#define BT_HCI_EVT_NUM_COMPLETED_PACKETS 0x13
struct bt_hci_evt_num_completed_packets {
uint8_t num_handles;
struct bt_hci_handle_count h[0];
struct bt_hci_handle_count h[];
} __packed;
#define BT_HCI_EVT_PIN_CODE_REQ 0x16
@ -1510,11 +1510,11 @@ struct bt_hci_evt_le_advertising_info {
uint8_t evt_type;
bt_addr_le_t addr;
uint8_t length;
uint8_t data[0];
uint8_t data[];
} __packed;
struct bt_hci_evt_le_advertising_report {
uint8_t num_reports;
struct bt_hci_evt_le_advertising_info adv_info[0];
struct bt_hci_evt_le_advertising_info adv_info[];
} __packed;
#define BT_HCI_EVT_LE_CONN_UPDATE_COMPLETE 0x03
@ -1593,7 +1593,7 @@ struct bt_hci_evt_le_direct_adv_info {
} __packed;
struct bt_hci_evt_le_direct_adv_report {
uint8_t num_reports;
struct bt_hci_evt_le_direct_adv_info direct_adv_info[0];
struct bt_hci_evt_le_direct_adv_info direct_adv_info[];
} __packed;
#define BT_HCI_EVT_LE_PHY_UPDATE_COMPLETE 0x0c
@ -1628,11 +1628,11 @@ struct bt_hci_evt_le_ext_advertising_info {
uint16_t interval;
bt_addr_le_t direct_addr;
uint8_t length;
uint8_t data[0];
uint8_t data[];
} __packed;
struct bt_hci_evt_le_ext_advertising_report {
uint8_t num_reports;
struct bt_hci_evt_le_ext_advertising_info adv_info[0];
struct bt_hci_evt_le_ext_advertising_info adv_info[];
} __packed;
#define BT_HCI_EVT_LE_PER_ADV_SYNC_ESTABLISHED 0x0e
@ -1654,7 +1654,7 @@ struct bt_hci_evt_le_per_advertising_report {
uint8_t unused;
uint8_t data_status;
uint8_t length;
uint8_t data[0];
uint8_t data[];
} __packed;
#define BT_HCI_EVT_LE_PER_ADV_SYNC_LOST 0x10

View File

@ -104,7 +104,7 @@ struct bt_hci_cp_vs_set_trace_enable {
#define BT_HCI_OP_VS_READ_BUILD_INFO BT_OP(BT_OGF_VS, 0x0008)
struct bt_hci_rp_vs_read_build_info {
uint8_t status;
uint8_t info[0];
uint8_t info[];
} __packed;
struct bt_hci_vs_static_addr {
@ -116,7 +116,7 @@ struct bt_hci_vs_static_addr {
struct bt_hci_rp_vs_read_static_addrs {
uint8_t status;
uint8_t num_addrs;
struct bt_hci_vs_static_addr a[0];
struct bt_hci_vs_static_addr a[];
} __packed;
#define BT_HCI_OP_VS_READ_KEY_HIERARCHY_ROOTS BT_OP(BT_OGF_VS, 0x000a)
@ -143,7 +143,7 @@ struct bt_hci_vs_cmd {
struct bt_hci_rp_vs_read_host_stack_cmds {
uint8_t status;
uint8_t num_cmds;
struct bt_hci_vs_cmd c[0];
struct bt_hci_vs_cmd c[];
} __packed;
#define BT_HCI_VS_SCAN_REQ_REPORTS_DISABLED 0x00
@ -189,7 +189,7 @@ struct bt_hci_rp_vs_read_tx_power_level {
struct bt_hci_rp_vs_read_usb_transport_mode {
uint8_t status;
uint8_t num_supported_modes;
uint8_t supported_mode[0];
uint8_t supported_mode[];
} __packed;
#define BT_HCI_VS_USB_H2_MODE 0x00
@ -210,7 +210,7 @@ struct bt_hci_evt_vs {
#define BT_HCI_EVT_VS_FATAL_ERROR 0x02
struct bt_hci_evt_vs_fatal_error {
uint64_t pc;
uint8_t err_info[0];
uint8_t err_info[];
} __packed;
#define BT_HCI_VS_TRACE_LMP_TX 0x01
@ -221,7 +221,7 @@ struct bt_hci_evt_vs_fatal_error {
#define BT_HCI_EVT_VS_TRACE_INFO 0x03
struct bt_hci_evt_vs_trace_info {
uint8_t type;
uint8_t data[0];
uint8_t data[];
} __packed;
#define BT_HCI_EVT_VS_SCAN_REQ_RX 0x04
@ -267,14 +267,14 @@ struct bt_hci_rp_mesh_get_opts {
#define BT_HCI_OC_MESH_SET_SCAN_FILTER 0x01
struct bt_hci_mesh_pattern {
uint8_t pattern_len;
uint8_t pattern[0];
uint8_t pattern[];
} __packed;
struct bt_hci_cp_mesh_set_scan_filter {
uint8_t scan_filter;
uint8_t filter_dup;
uint8_t num_patterns;
struct bt_hci_mesh_pattern patterns[0];
struct bt_hci_mesh_pattern patterns[];
} __packed;
struct bt_hci_rp_mesh_set_scan_filter {
uint8_t status;
@ -365,11 +365,11 @@ struct bt_hci_evt_mesh_scan_report {
int8_t rssi;
uint32_t instant;
uint8_t data_len;
uint8_t data[0];
uint8_t data[];
} __packed;
struct bt_hci_evt_mesh_scanning_report {
uint8_t num_reports;
struct bt_hci_evt_mesh_scan_report reports[0];
struct bt_hci_evt_mesh_scan_report reports[];
} __packed;
#ifdef __cplusplus

View File

@ -45,7 +45,7 @@ struct bt_l2cap_sig_hdr {
#define BT_L2CAP_CMD_REJECT 0x01
struct bt_l2cap_cmd_reject {
uint16_t reason;
uint8_t data[0];
uint8_t data[];
} __packed;
struct bt_l2cap_cmd_reject_cid_data {
@ -88,7 +88,7 @@ struct bt_l2cap_conn_rsp {
struct bt_l2cap_conf_req {
uint16_t dcid;
uint16_t flags;
uint8_t data[0];
uint8_t data[];
} __packed;
#define BT_L2CAP_CONF_RSP 0x05
@ -96,7 +96,7 @@ struct bt_l2cap_conf_rsp {
uint16_t scid;
uint16_t flags;
uint16_t result;
uint8_t data[0];
uint8_t data[];
} __packed;
/* Option type used by MTU config request data */
@ -108,7 +108,7 @@ struct bt_l2cap_conf_rsp {
struct bt_l2cap_conf_opt {
uint8_t type;
uint8_t len;
uint8_t data[0];
uint8_t data[];
} __packed;
#define BT_L2CAP_DISCONN_REQ 0x06
@ -139,7 +139,7 @@ struct bt_l2cap_info_req {
struct bt_l2cap_info_rsp {
uint16_t type;
uint16_t result;
uint8_t data[0];
uint8_t data[];
} __packed;
#define BT_L2CAP_CONN_PARAM_REQ 0x12
@ -201,7 +201,7 @@ struct bt_l2cap_ecred_conn_req {
uint16_t mtu;
uint16_t mps;
uint16_t credits;
uint16_t scid[0];
uint16_t scid[];
} __packed;
#define BT_L2CAP_ECRED_CONN_RSP 0x18
@ -210,14 +210,14 @@ struct bt_l2cap_ecred_conn_rsp {
uint16_t mps;
uint16_t credits;
uint16_t result;
uint16_t dcid[0];
uint16_t dcid[];
} __packed;
#define BT_L2CAP_ECRED_RECONF_REQ 0x19
struct bt_l2cap_ecred_reconf_req {
uint16_t mtu;
uint16_t mps;
uint16_t scid[0];
uint16_t scid[];
} __packed;
#define BT_L2CAP_RECONF_SUCCESS 0x0000

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-10-10 23:51+0000\n"
"Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -392,7 +392,7 @@ msgstr "Send yang lain sudah aktif"
msgid "Array must contain halfwords (type 'H')"
msgstr "Array harus mengandung halfwords (ketik 'H')"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Nilai array harus berupa byte tunggal."
@ -504,8 +504,8 @@ msgstr "Panjang buffer harus kelipatan 512"
msgid "Buffer must be a multiple of 512 bytes"
msgstr ""
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Penyangga harus memiliki panjang setidaknya 1"
@ -528,7 +528,7 @@ msgstr "Pin bus %d sudah digunakan"
msgid "Byte buffer must be 16 bytes."
msgstr "Byte buffer harus 16 byte."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Bytes harus di antara 0 dan 255."
@ -1101,6 +1101,10 @@ msgstr "Pin DAC yang diberikan tidak valid"
msgid "Invalid PWM frequency"
msgstr "Frekuensi PWM tidak valid"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Argumen tidak valid"
@ -1317,7 +1321,7 @@ msgstr "Tidak ada DAC (Digital Analog Converter) di dalam chip"
msgid "No DMA channel found"
msgstr "tidak ada channel DMA ditemukan"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1532,6 +1536,7 @@ msgstr "Izin ditolak"
msgid "Pin does not have ADC capabilities"
msgstr "Pin tidak mempunya kemampuan untuk ADC (Analog Digital Converter)"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr ""
@ -1587,10 +1592,12 @@ msgid "Prefix buffer must be on the heap"
msgstr "Buffer awalan harus ada di heap"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
"Tekan tombol apa saja untuk masuk ke dalam REPL. Gunakan CTRL+D untuk reset "
"(Reload)"
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1726,7 +1733,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Potongan dan nilai panjangnya berbeda."
@ -1945,6 +1952,10 @@ msgstr ""
msgid "Unable to write to nvm."
msgstr ""
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr ""
@ -2072,6 +2083,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2154,7 +2169,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr ""
@ -3254,7 +3270,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""
@ -3846,6 +3862,11 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Tekan tombol apa saja untuk masuk ke dalam REPL. Gunakan CTRL+D untuk "
#~ "reset (Reload)"
#~ msgid ""
#~ "\n"
#~ "To exit, please reset the board without "

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-08 09:56-0800\n"
"POT-Creation-Date: 2020-12-23 16:41-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -388,7 +388,7 @@ msgstr ""
msgid "Array must contain halfwords (type 'H')"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr ""
@ -522,7 +522,7 @@ msgstr ""
msgid "Byte buffer must be 16 bytes."
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr ""
@ -936,6 +936,10 @@ msgstr ""
msgid "Filters too complex"
msgstr ""
#: ports/esp32s2/common-hal/dualbank/__init__.c
msgid "Firmware image is invalid"
msgstr ""
#: ports/cxd56/common-hal/camera/Camera.c
msgid "Format not supported"
msgstr ""
@ -945,10 +949,6 @@ msgstr ""
msgid "Framebuffer requires %d bytes"
msgstr ""
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
msgid "Frequency captured is above capability. Capture Paused."
msgstr ""
#: ports/stm/common-hal/pwmio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
@ -1080,6 +1080,10 @@ msgstr ""
msgid "Invalid PWM frequency"
msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr ""
@ -1696,7 +1700,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr ""
@ -1911,6 +1915,10 @@ msgstr ""
msgid "Unable to write to nvm."
msgstr ""
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr ""
@ -1975,6 +1983,10 @@ msgstr ""
msgid "Unsupported pull value."
msgstr ""
#: ports/esp32s2/common-hal/dualbank/__init__.c
msgid "Update Failed"
msgstr ""
#: ports/nrf/common-hal/_bleio/Characteristic.c
#: ports/nrf/common-hal/_bleio/Descriptor.c
msgid "Value length != required fixed length"
@ -2117,7 +2129,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr ""
@ -2992,7 +3005,7 @@ msgid "max_length must be 0-%d when fixed_length is %s"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c shared-bindings/_bleio/Descriptor.c
msgid "max_length must be > 0"
msgid "max_length must be >= 0"
msgstr ""
#: extmod/ulab/code/ndarray.c
@ -3130,6 +3143,14 @@ msgstr ""
msgid "non-keyword arg after keyword arg"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "non-zero timeout must be > 0.01"
msgstr ""
#: shared-bindings/_bleio/Adapter.c
msgid "non-zero timeout must be >= interval"
msgstr ""
#: extmod/ulab/code/linalg/linalg.c
msgid "norm is defined for 1D and 2D arrays"
msgstr ""
@ -3202,6 +3223,10 @@ msgstr ""
msgid "offset is too large"
msgstr ""
#: shared-bindings/dualbank/__init__.c
msgid "offset must be >= 0"
msgstr ""
#: py/objstr.c py/objstrunicode.c
msgid "offset out of bounds"
msgstr ""
@ -3215,7 +3240,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""
@ -3547,6 +3572,10 @@ msgstr ""
msgid "timeout must be 0.0-100.0 seconds"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "timeout must be < 655.35 secs"
msgstr ""
#: shared-bindings/_bleio/CharacteristicBuffer.c
msgid "timeout must be >= 0.0"
msgstr ""

View File

@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"PO-Revision-Date: 2020-12-02 20:29+0000\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-12-04 18:33+0000\n"
"Last-Translator: vkuthan <vit.kuthan@seznam.cz>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: cs\n"
@ -22,7 +22,7 @@ msgid ""
"Code done running. Waiting for reload.\n"
msgstr ""
"\n"
"Kód byl dokončen. Čekám na opětovné načtení.\n"
"Kód byl dokončen. Čekám na opětovné nahrání.\n"
#: supervisor/shared/safe_mode.c
msgid ""
@ -58,11 +58,11 @@ msgstr "%d adresní piny a %d rgb piny označují výšku %d, nikoli %d"
#: ports/atmel-samd/common-hal/sdioio/SDCard.c
msgid "%q failure: %d"
msgstr ""
msgstr "Selhání %q: %d"
#: shared-bindings/microcontroller/Pin.c
msgid "%q in use"
msgstr "%q se nyní používá"
msgstr "Používá se %q"
#: extmod/moductypes.c ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
@ -70,11 +70,11 @@ msgstr "%q se nyní používá"
#: ports/stm/common-hal/pulseio/PulseIn.c py/obj.c py/objstr.c
#: py/objstrunicode.c
msgid "%q index out of range"
msgstr "%q index je mimo rozsah"
msgstr "Index %q je mimo rozsah"
#: py/obj.c
msgid "%q indices must be integers, not %q"
msgstr "%q indexy musí být celá čísla, ne %q"
msgstr "Indexy %q musí být celá čísla, ne %q"
#: shared-bindings/vectorio/Polygon.c
msgid "%q list must be a list"
@ -90,11 +90,11 @@ msgstr "%q musí být >= 0"
#: shared-bindings/memorymonitor/AllocationAlarm.c
#: shared-bindings/vectorio/Circle.c shared-bindings/vectorio/Rectangle.c
msgid "%q must be >= 1"
msgstr " %q musí být > = 1"
msgstr "%q musí být > = 1"
#: shared-module/vectorio/Polygon.c
msgid "%q must be a tuple of length 2"
msgstr " %q musí být n-tice délky 2"
msgstr "%q musí být n-tice délky 2"
#: shared-bindings/canio/Match.c
msgid "%q out of range"
@ -102,23 +102,23 @@ msgstr "%q je mimo rozsah"
#: ports/atmel-samd/common-hal/microcontroller/Pin.c
msgid "%q pin invalid"
msgstr ""
msgstr "Pin %q není platný"
#: shared-bindings/fontio/BuiltinFont.c
msgid "%q should be an int"
msgstr " %q by měl být int"
msgstr "%q by měl být int"
#: py/bc.c py/objnamedtuple.c
msgid "%q() takes %d positional arguments but %d were given"
msgstr ""
msgstr "%q() vyžaduje %d pozičních argumentů, ale %d jich bylo zadáno"
#: py/argcheck.c
msgid "'%q' argument required"
msgstr ""
msgstr "Je vyžadován argument '%q'"
#: py/runtime.c
msgid "'%q' object cannot assign attribute '%q'"
msgstr ""
msgstr "'%q' nemůže přiřadit atribut '%q'"
#: py/proto.c
msgid "'%q' object does not support '%q'"
@ -392,7 +392,7 @@ msgstr ""
msgid "Array must contain halfwords (type 'H')"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr ""
@ -502,8 +502,8 @@ msgstr ""
msgid "Buffer must be a multiple of 512 bytes"
msgstr ""
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr ""
@ -526,7 +526,7 @@ msgstr ""
msgid "Byte buffer must be 16 bytes."
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr ""
@ -1084,6 +1084,10 @@ msgstr ""
msgid "Invalid PWM frequency"
msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr ""
@ -1300,7 +1304,7 @@ msgstr ""
msgid "No DMA channel found"
msgstr ""
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1507,6 +1511,7 @@ msgstr ""
msgid "Pin does not have ADC capabilities"
msgstr ""
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr ""
@ -1559,7 +1564,11 @@ msgid "Prefix buffer must be on the heap"
msgstr ""
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@ -1695,7 +1704,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr ""
@ -1910,6 +1919,10 @@ msgstr ""
msgid "Unable to write to nvm."
msgstr ""
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr ""
@ -2030,6 +2043,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2112,7 +2129,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr ""
@ -3210,7 +3228,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-11-26 03:11+0000\n"
"Last-Translator: Daniel Bravo Darriba <bravodarriba@gmail.com>\n"
"Language: de_DE\n"
@ -391,7 +391,7 @@ msgstr "Ein anderer Sendevorgang ist schon aktiv"
msgid "Array must contain halfwords (type 'H')"
msgstr "Array muss Halbwörter enthalten (type 'H')"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Array-Werte sollten aus Einzelbytes bestehen."
@ -505,8 +505,8 @@ msgstr "Die Pufferlänge muss ein vielfaches von 512 sein"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "Der Puffer muss ein vielfaches von 512 bytes sein"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Der Puffer muss eine Mindestenslänge von 1 haben"
@ -529,7 +529,7 @@ msgstr "Bus pin %d wird schon benutzt"
msgid "Byte buffer must be 16 bytes."
msgstr "Der Puffer muss 16 Bytes lang sein."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Ein Bytes kann nur Werte zwischen 0 und 255 annehmen."
@ -1101,6 +1101,10 @@ msgstr "Ungültiger DAC-Pin angegeben"
msgid "Invalid PWM frequency"
msgstr "Ungültige PWM Frequenz"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Ungültiges Argument"
@ -1319,7 +1323,7 @@ msgstr "Kein DAC im Chip vorhanden"
msgid "No DMA channel found"
msgstr "Kein DMA Kanal gefunden"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1532,6 +1536,7 @@ msgstr "Zugang verweigert"
msgid "Pin does not have ADC capabilities"
msgstr "Pin hat keine ADC Funktionalität"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr "Pin kann nur als Eingang verwendet werden"
@ -1587,10 +1592,12 @@ msgid "Prefix buffer must be on the heap"
msgstr "Der Präfixbuffer muss sich auf dem Heap befinden"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
"Drücke eine Taste um dich mit der REPL zu verbinden. Drücke Strg-D zum neu "
"laden."
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1725,7 +1732,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Slice und Wert (value) haben unterschiedliche Längen."
@ -1954,6 +1961,10 @@ msgstr "Konnte Farbpalettendaten nicht lesen"
msgid "Unable to write to nvm."
msgstr "Schreiben in nvm nicht möglich."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "Unerwarteter nrfx uuid-Typ"
@ -2087,6 +2098,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr "WiFi Passwort muss zwischen 8 und 63 Zeichen lang sein"
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr "Schreiben nicht unterstüzt für diese Charakteristik"
@ -2171,7 +2186,8 @@ msgstr "Argumente müssen ndarrays sein"
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "Array/Bytes auf der rechten Seite erforderlich"
@ -3289,7 +3305,7 @@ msgid "only sample_rate=16000 is supported"
msgstr "nur eine sample_rate=16000 wird unterstützt"
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""
"Es werden nur Slices mit Schritt = 1 (auch bekannt als None) unterstützt"
@ -3890,6 +3906,11 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Drücke eine Taste um dich mit der REPL zu verbinden. Drücke Strg-D zum "
#~ "neu laden."
#~ msgid "arctan2 is implemented for scalars and ndarrays only"
#~ msgstr "arctan2 ist nur für Skalare und ndarrays implementiert"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -387,7 +387,7 @@ msgstr ""
msgid "Array must contain halfwords (type 'H')"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr ""
@ -497,8 +497,8 @@ msgstr ""
msgid "Buffer must be a multiple of 512 bytes"
msgstr ""
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr ""
@ -521,7 +521,7 @@ msgstr ""
msgid "Byte buffer must be 16 bytes."
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr ""
@ -1079,6 +1079,10 @@ msgstr ""
msgid "Invalid PWM frequency"
msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr ""
@ -1295,7 +1299,7 @@ msgstr ""
msgid "No DMA channel found"
msgstr ""
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1502,6 +1506,7 @@ msgstr ""
msgid "Pin does not have ADC capabilities"
msgstr ""
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr ""
@ -1554,7 +1559,11 @@ msgid "Prefix buffer must be on the heap"
msgstr ""
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@ -1690,7 +1699,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr ""
@ -1905,6 +1914,10 @@ msgstr ""
msgid "Unable to write to nvm."
msgstr ""
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr ""
@ -2025,6 +2038,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2107,7 +2124,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr ""
@ -3205,7 +3223,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-11-27 18:34+0000\n"
"Last-Translator: Iván Montiel Cardona <ivan_montiel2013@hotmail.com>\n"
"Language-Team: \n"
@ -397,7 +397,7 @@ msgstr "Otro envío ya está activo"
msgid "Array must contain halfwords (type 'H')"
msgstr "El array debe contener medias palabras (escriba 'H')"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Valores del array deben ser bytes individuales."
@ -511,8 +511,8 @@ msgstr "El tamaño del búfer debe ser múltiplo de 512"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "Búfer deber ser un múltiplo de 512 bytes"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Buffer debe ser de longitud 1 como minimo"
@ -535,7 +535,7 @@ msgstr "Bus pin %d ya está siendo utilizado"
msgid "Byte buffer must be 16 bytes."
msgstr "Búfer Byte debe de ser 16 bytes."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Bytes debe estar entre 0 y 255."
@ -1102,6 +1102,10 @@ msgstr "Pin suministrado inválido para DAC"
msgid "Invalid PWM frequency"
msgstr "Frecuencia PWM inválida"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Argumento inválido"
@ -1318,7 +1322,7 @@ msgstr "El chip no tiene DAC"
msgid "No DMA channel found"
msgstr "No se encontró el canal DMA"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1533,6 +1537,7 @@ msgstr "Permiso denegado"
msgid "Pin does not have ADC capabilities"
msgstr "Pin no tiene capacidad ADC"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr "El pin es solo de entrada"
@ -1592,9 +1597,12 @@ msgid "Prefix buffer must be on the heap"
msgstr "El prefijo del buffer debe estar en el heap"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
"Presiona cualquier tecla para entrar al REPL. Usa CTRL-D para recargar."
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1729,7 +1737,7 @@ msgstr "El contexto del lado del servidor no puede tener un hostname"
msgid "Size not supported"
msgstr "Sin capacidades para el tamaño"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Slice y value tienen tamaños diferentes."
@ -1958,6 +1966,10 @@ msgstr "No se pudo leer los datos de la paleta de colores"
msgid "Unable to write to nvm."
msgstr "Imposible escribir en nvm."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "Tipo de uuid nrfx inesperado"
@ -2089,6 +2101,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr "La clave de WiFi debe ser entre 8 y 63 caracteres"
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr "Escrituras no admitidas en Characteristic"
@ -2171,7 +2187,8 @@ msgstr "argumentos deben ser ndarrays"
msgid "array and index length must be equal"
msgstr "Longitud del array e índice tienen que ser iguales"
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "array/bytes requeridos en el lado derecho"
@ -3282,7 +3299,7 @@ msgid "only sample_rate=16000 is supported"
msgstr "solo se admite sample_rate=16000"
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr "solo se admiten segmentos con step=1 (alias None)"
@ -3876,6 +3893,10 @@ msgstr "zi debe ser de tipo flotante"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi debe ser una forma (n_section,2)"
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Presiona cualquier tecla para entrar al REPL. Usa CTRL-D para recargar."
#~ msgid "Only IPv4 SOCK_STREAM sockets supported"
#~ msgstr "Solo hay capacidad para enchufes IPv4 SOCK_STREAM"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
"Language-Team: fil\n"
@ -390,7 +390,7 @@ msgstr "Isa pang send ay aktibo na"
msgid "Array must contain halfwords (type 'H')"
msgstr "May halfwords (type 'H') dapat ang array"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Array values ay dapat single bytes."
@ -502,8 +502,8 @@ msgstr ""
msgid "Buffer must be a multiple of 512 bytes"
msgstr ""
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Buffer dapat ay hindi baba sa 1 na haba"
@ -527,7 +527,7 @@ msgstr "Ginagamit na ang DAC"
msgid "Byte buffer must be 16 bytes."
msgstr "buffer ay dapat bytes-like object"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Sa gitna ng 0 o 255 dapat ang bytes."
@ -1094,6 +1094,10 @@ msgstr ""
msgid "Invalid PWM frequency"
msgstr "Mali ang PWM frequency"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Maling argumento"
@ -1310,7 +1314,7 @@ msgstr "Walang DAC sa chip"
msgid "No DMA channel found"
msgstr "Walang DMA channel na mahanap"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1521,6 +1525,7 @@ msgstr "Walang pahintulot"
msgid "Pin does not have ADC capabilities"
msgstr "Ang pin ay walang kakayahan sa ADC"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr ""
@ -1573,10 +1578,12 @@ msgid "Prefix buffer must be on the heap"
msgstr ""
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
"Pindutin ang anumang key upang pumasok sa REPL. Gamitin ang CTRL-D upang i-"
"reload."
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1712,7 +1719,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Slice at value iba't ibang haba."
@ -1927,6 +1934,10 @@ msgstr ""
msgid "Unable to write to nvm."
msgstr "Hindi ma i-sulat sa NVM."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, fuzzy
msgid "Unexpected nrfx uuid type"
@ -2057,6 +2068,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2139,7 +2154,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "array/bytes kinakailangan sa kanang bahagi"
@ -3255,7 +3271,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr "ang mga slices lamang na may hakbang = 1 (aka None) ang sinusuportahan"
@ -3853,6 +3869,11 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Pindutin ang anumang key upang pumasok sa REPL. Gamitin ang CTRL-D upang "
#~ "i-reload."
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "%q indeks ay dapat integers, hindi %s"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"PO-Revision-Date: 2020-11-24 22:45+0000\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-12-08 19:21+0000\n"
"Last-Translator: Antonin ENFRUN <antonin.e@me.com>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@ -397,7 +397,7 @@ msgstr "Un autre envoi est déjà actif"
msgid "Array must contain halfwords (type 'H')"
msgstr "Le tableau doit contenir des demi-mots (type 'H')"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Les valeurs du tableau doivent être des octets simples 'bytes'."
@ -511,8 +511,8 @@ msgstr "La longueur de la mémoire tampon doit être un multiple de 512"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "La mémoire tampon doit être un multiple de 512"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Le tampon doit être de longueur au moins 1"
@ -535,7 +535,7 @@ msgstr "La broche %d du bus est déjà utilisée"
msgid "Byte buffer must be 16 bytes."
msgstr "Le tampon doit être de 16 octets."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Les octets 'bytes' doivent être entre 0 et 255."
@ -1107,6 +1107,10 @@ msgstr "Broche DAC non valide fournie"
msgid "Invalid PWM frequency"
msgstr "Fréquence de PWM invalide"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Argument invalide"
@ -1303,7 +1307,7 @@ msgstr "Doit utiliser un multiple de 6 broches RVB, pas %d"
#: ports/esp32s2/common-hal/nvm/ByteArray.c
msgid "NVS Error"
msgstr ""
msgstr "Erreur NVS"
#: py/parse.c
msgid "Name too long"
@ -1323,10 +1327,10 @@ msgstr "Pas de DAC sur la puce"
msgid "No DMA channel found"
msgstr "Aucun canal DMA trouvé"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
msgstr "Pas de dispositif I2C à l'adresse : %x"
#: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/SPI.c
@ -1468,7 +1472,7 @@ msgstr "Seules les adresses IPv4 sont prises en charge"
#: ports/esp32s2/common-hal/socketpool/SocketPool.c
msgid "Only IPv4 sockets supported"
msgstr ""
msgstr "Seules les sockets IPv4 sont prises en charge"
#: shared-module/displayio/OnDiskBitmap.c
#, c-format
@ -1540,6 +1544,7 @@ msgstr "Permission refusée"
msgid "Pin does not have ADC capabilities"
msgstr "La broche ne peut être utilisée pour l'ADC"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr "La broche est entrée uniquement"
@ -1554,7 +1559,7 @@ msgstr "Numéro de broche déjà réservé par EXTI"
#: ports/esp32s2/common-hal/alarm/__init__.c
msgid "PinAlarm not yet implemented"
msgstr ""
msgstr "PinAlarm pas encore implémenté"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@ -1599,8 +1604,12 @@ msgid "Prefix buffer must be on the heap"
msgstr "Le tampon de préfixe doit être sur le tas"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgstr "Appuyez sur une touche pour entrer sur REPL ou CTRL-D pour recharger."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1735,7 +1744,7 @@ msgstr "Un contexte niveau serveur ne peut avoir de hostname"
msgid "Size not supported"
msgstr "Taille non prise en charge"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Tranche et valeur de tailles différentes."
@ -1772,7 +1781,7 @@ msgstr "Fournissez au moins une broche UART"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Supply one of monotonic_time or epoch_time"
msgstr ""
msgstr "Fournissez l'un de monotonic_time ou epoch_time"
#: shared-bindings/gnss/GNSS.c
msgid "System entry must be gnss.SatelliteSystem"
@ -1965,6 +1974,10 @@ msgstr "Impossible de lire les données de la palette de couleurs"
msgid "Unable to write to nvm."
msgstr "Impossible d'écrire sur la mémoire non-volatile."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "Type inattendu pour l'uuid nrfx"
@ -2098,6 +2111,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr "Le mot de passe WiFi doit faire entre 8 et 63 caractères"
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr "Écritures non prises en charge sur la caractéristique"
@ -2180,7 +2197,8 @@ msgstr "les arguments doivent être des ndarrays"
msgid "array and index length must be equal"
msgstr "la longueur du tableau et de l'index doit être égale"
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "tableau/octets requis à droite"
@ -3300,7 +3318,7 @@ msgid "only sample_rate=16000 is supported"
msgstr "seul sample_rate = 16000 est pris en charge"
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr "seules les tranches avec 'step=1' (cad None) sont supportées"
@ -3897,6 +3915,10 @@ msgstr "zi doit être de type float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi doit être de forme (n_section, 2)"
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Appuyez sur une touche pour entrer sur REPL ou CTRL-D pour recharger."
#~ msgid "Only IPv4 SOCK_STREAM sockets supported"
#~ msgstr "Seules les sockets IPv4 SOCK_STREAM sont prises en charge"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -387,7 +387,7 @@ msgstr ""
msgid "Array must contain halfwords (type 'H')"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr ""
@ -497,8 +497,8 @@ msgstr ""
msgid "Buffer must be a multiple of 512 bytes"
msgstr ""
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr ""
@ -521,7 +521,7 @@ msgstr ""
msgid "Byte buffer must be 16 bytes."
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr ""
@ -1079,6 +1079,10 @@ msgstr ""
msgid "Invalid PWM frequency"
msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr ""
@ -1295,7 +1299,7 @@ msgstr ""
msgid "No DMA channel found"
msgstr ""
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1502,6 +1506,7 @@ msgstr ""
msgid "Pin does not have ADC capabilities"
msgstr ""
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr ""
@ -1554,7 +1559,11 @@ msgid "Prefix buffer must be on the heap"
msgstr ""
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@ -1690,7 +1699,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr ""
@ -1905,6 +1914,10 @@ msgstr ""
msgid "Unable to write to nvm."
msgstr ""
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr ""
@ -2025,6 +2038,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2107,7 +2124,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr ""
@ -3205,7 +3223,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
"Language-Team: \n"
@ -389,7 +389,7 @@ msgstr "Another send è gia activato"
msgid "Array must contain halfwords (type 'H')"
msgstr "Array deve avere mezzoparole (typo 'H')"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Valori di Array dovrebbero essere bytes singulari"
@ -502,8 +502,8 @@ msgstr ""
msgid "Buffer must be a multiple of 512 bytes"
msgstr ""
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Il buffer deve essere lungo almeno 1"
@ -527,7 +527,7 @@ msgstr "DAC già in uso"
msgid "Byte buffer must be 16 bytes."
msgstr "i buffer devono essere della stessa lunghezza"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "I byte devono essere compresi tra 0 e 255"
@ -1094,6 +1094,10 @@ msgstr ""
msgid "Invalid PWM frequency"
msgstr "Frequenza PWM non valida"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Argomento non valido"
@ -1314,7 +1318,7 @@ msgstr "Nessun DAC sul chip"
msgid "No DMA channel found"
msgstr "Nessun canale DMA trovato"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1530,6 +1534,7 @@ msgstr "Permesso negato"
msgid "Pin does not have ADC capabilities"
msgstr "Il pin non ha capacità di ADC"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr ""
@ -1583,9 +1588,12 @@ msgid "Prefix buffer must be on the heap"
msgstr ""
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
"Premi un qualunque tasto per entrare nel REPL. Usa CTRL-D per ricaricare."
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1723,7 +1731,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr ""
@ -1938,6 +1946,10 @@ msgstr ""
msgid "Unable to write to nvm."
msgstr "Imposibile scrivere su nvm."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
#, fuzzy
msgid "Unexpected nrfx uuid type"
@ -2060,6 +2072,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2142,7 +2158,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr ""
@ -3260,7 +3277,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr "solo slice con step=1 (aka None) sono supportate"
@ -3860,6 +3877,10 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Premi un qualunque tasto per entrare nel REPL. Usa CTRL-D per ricaricare."
#~ msgid "%q indices must be integers, not %s"
#~ msgstr "gli indici %q devono essere interi, non %s"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-11-27 18:34+0000\n"
"Last-Translator: sporeball <sporeballdev@gmail.com>\n"
"Language-Team: none\n"
@ -394,7 +394,7 @@ msgstr "他のsendがすでにアクティブ"
msgid "Array must contain halfwords (type 'H')"
msgstr "array のタイプは16ビット ('H') でなければなりません"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Arrayの各値は1バイトでなければなりません"
@ -506,8 +506,8 @@ msgstr "バッファ長は512の倍数でなければなりません"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "バッファは512の倍数でなければなりません"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "バッファ長は少なくとも1以上でなければなりません"
@ -530,7 +530,7 @@ msgstr "Busピン%dはすでに使用中"
msgid "Byte buffer must be 16 bytes."
msgstr "バッファは16バイトでなければなりません"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "バイト値は0から255の間でなければなりません"
@ -1094,6 +1094,10 @@ msgstr "不正なDACピンが与えられました"
msgid "Invalid PWM frequency"
msgstr "無効なPWM周波数"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "不正な引数"
@ -1310,7 +1314,7 @@ msgstr "チップにDACがありません"
msgid "No DMA channel found"
msgstr "DMAチャネルが見つかりません"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1520,6 +1524,7 @@ msgstr "パーミッション拒否"
msgid "Pin does not have ADC capabilities"
msgstr "ピンにADCの能力がありません"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr "ピンは入力専用"
@ -1572,8 +1577,12 @@ msgid "Prefix buffer must be on the heap"
msgstr "Prefixバッファはヒープ上になければなりません"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgstr "何らかのキーを押すとREPLに入ります。CTRL-Dでリロード。"
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1708,7 +1717,7 @@ msgstr ""
msgid "Size not supported"
msgstr "サイズは対応していません"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "スライスと値の長さが一致しません"
@ -1930,6 +1939,10 @@ msgstr "カラーパレットデータを読み込めません"
msgid "Unable to write to nvm."
msgstr "nvmに書き込みできません"
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "想定されていないnrfx UUID型"
@ -2050,6 +2063,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr "WiFiパスワードは8〜63文字でなければなりません"
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2132,7 +2149,8 @@ msgstr "引数はndarrayでなければなりません"
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "右辺にはarray/bytesが必要"
@ -3235,7 +3253,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""
@ -3829,6 +3847,9 @@ msgstr "ziはfloat値でなければなりません"
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr "何らかのキーを押すとREPLに入ります。CTRL-Dでリロード。"
#~ msgid "axis must be -1, 0, None, or 1"
#~ msgstr "axisは -1, 0, 1, None のいずれかでなければなりません"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-10-05 12:12+0000\n"
"Last-Translator: Michal Čihař <michal@cihar.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -390,7 +390,7 @@ msgstr ""
msgid "Array must contain halfwords (type 'H')"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr ""
@ -502,8 +502,8 @@ msgstr ""
msgid "Buffer must be a multiple of 512 bytes"
msgstr ""
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "잘못된 크기의 버퍼. >1 여야합니다"
@ -526,7 +526,7 @@ msgstr ""
msgid "Byte buffer must be 16 bytes."
msgstr "잘못된 크기의 버퍼. 16 바이트 여야합니다."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "바이트는 0에서 255 사이 여야합니다."
@ -1084,6 +1084,10 @@ msgstr ""
msgid "Invalid PWM frequency"
msgstr ""
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr ""
@ -1300,7 +1304,7 @@ msgstr ""
msgid "No DMA channel found"
msgstr ""
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1507,6 +1511,7 @@ msgstr ""
msgid "Pin does not have ADC capabilities"
msgstr ""
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr ""
@ -1559,7 +1564,11 @@ msgid "Prefix buffer must be on the heap"
msgstr ""
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
@ -1695,7 +1704,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr ""
@ -1911,6 +1920,10 @@ msgstr ""
msgid "Unable to write to nvm."
msgstr ""
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr ""
@ -2031,6 +2044,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2113,7 +2130,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr ""
@ -3211,7 +3229,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-10-27 16:47+0000\n"
"Last-Translator: Jelle Jager <jell@jjc.id.au>\n"
"Language-Team: none\n"
@ -392,7 +392,7 @@ msgstr "Een andere send is al actief"
msgid "Array must contain halfwords (type 'H')"
msgstr "Array moet halfwords (type 'H') bevatten"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Array waardes moet enkele bytes zijn."
@ -504,8 +504,8 @@ msgstr "Buffer lengte moet een veelvoud van 512 zijn"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "Buffer moet een veelvoud van 512 bytes zijn"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Buffer moet op zijn minst lengte 1 zijn"
@ -528,7 +528,7 @@ msgstr "Bus pin %d al in gebruik"
msgid "Byte buffer must be 16 bytes."
msgstr "Byte buffer moet 16 bytes zijn."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Bytes moeten tussen 0 en 255 liggen."
@ -1096,6 +1096,10 @@ msgstr "Ongeldige DAC pin opgegeven"
msgid "Invalid PWM frequency"
msgstr "Ongeldige PWM frequentie"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Ongeldig argument"
@ -1312,7 +1316,7 @@ msgstr "Geen DAC op de chip"
msgid "No DMA channel found"
msgstr "Geen DMA kanaal gevonden"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1528,6 +1532,7 @@ msgstr "Toegang geweigerd"
msgid "Pin does not have ADC capabilities"
msgstr "Pin heeft geen ADC mogelijkheden"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr "Pin kan alleen voor invoer gebruikt worden"
@ -1587,10 +1592,12 @@ msgid "Prefix buffer must be on the heap"
msgstr "Prefix buffer moet op de heap zijn"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
"Druk een willekeurige toets om de REPL te starten. Gebruik CTRL+D om te "
"herstarten."
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1725,7 +1732,7 @@ msgstr "Context aan de serverkant kan geen hostnaam hebben"
msgid "Size not supported"
msgstr "Afmeting niet ondersteund"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Slice en waarde hebben verschillende lengtes."
@ -1950,6 +1957,10 @@ msgstr "Niet in staat kleurenpalet data te lezen"
msgid "Unable to write to nvm."
msgstr "Niet in staat om naar nvm te schrijven."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "Onverwacht mrfx uuid type"
@ -2081,6 +2092,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr "WiFi wachtwoord moet tussen 8 en 63 karakters bevatten"
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr "Schrijven niet ondersteund op Characteristic"
@ -2163,7 +2178,8 @@ msgstr "argumenten moeten ndarrays zijn"
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "array/bytes vereist aan de rechterkant"
@ -3269,7 +3285,7 @@ msgid "only sample_rate=16000 is supported"
msgstr "alleen sample_rate=16000 wordt ondersteund"
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr "alleen segmenten met step=1 (ook wel None) worden ondersteund"
@ -3863,6 +3879,11 @@ msgstr "zi moet van type float zijn"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi moet vorm (n_section, 2) hebben"
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Druk een willekeurige toets om de REPL te starten. Gebruik CTRL+D om te "
#~ "herstarten."
#~ msgid "Only IPv4 SOCK_STREAM sockets supported"
#~ msgstr "Alleen IPv4 SOCK_STREAM sockets worden ondersteund"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-12-02 20:29+0000\n"
"Last-Translator: Maciej Stankiewicz <tawezik@gmail.com>\n"
"Language-Team: pl\n"
@ -394,7 +394,7 @@ msgstr "Wysyłanie jest już w toku"
msgid "Array must contain halfwords (type 'H')"
msgstr "Tablica musi zawierać pół-słowa (typ 'H')"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Wartości powinny być bajtami."
@ -506,8 +506,8 @@ msgstr "Długość bufora musi być wielokrotnością 512"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "Bufor musi być wielokrotnością 512 bajtów"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Bufor musi mieć długość 1 lub więcej"
@ -530,7 +530,7 @@ msgstr "Nóżka magistrali %d jest w użyciu"
msgid "Byte buffer must be 16 bytes."
msgstr "Bufor musi mieć 16 bajtów."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Bytes musi być między 0 a 255."
@ -1094,6 +1094,10 @@ msgstr ""
msgid "Invalid PWM frequency"
msgstr "Zła częstotliwość PWM"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Zły argument"
@ -1311,7 +1315,7 @@ msgstr "Brak DAC"
msgid "No DMA channel found"
msgstr "Nie znaleziono kanału DMA"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1518,6 +1522,7 @@ msgstr "Odmowa dostępu"
msgid "Pin does not have ADC capabilities"
msgstr "Nóżka nie obsługuje ADC"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr ""
@ -1570,8 +1575,12 @@ msgid "Prefix buffer must be on the heap"
msgstr ""
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgstr "Dowolny klawisz aby uruchomić konsolę. CTRL-D aby przeładować."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1706,7 +1715,7 @@ msgstr ""
msgid "Size not supported"
msgstr ""
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Fragment i wartość są różnych długości."
@ -1921,6 +1930,10 @@ msgstr "Nie można odczytać danych palety"
msgid "Unable to write to nvm."
msgstr "Błąd zapisu do NVM."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "Nieoczekiwany typ nrfx uuid"
@ -2047,6 +2060,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr ""
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr ""
@ -2129,7 +2146,8 @@ msgstr ""
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "tablica/bytes wymagane po prawej stronie"
@ -3228,7 +3246,7 @@ msgid "only sample_rate=16000 is supported"
msgstr ""
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr "tylko fragmenty ze step=1 (lub None) są wspierane"
@ -3821,6 +3839,9 @@ msgstr ""
msgid "zi must be of shape (n_section, 2)"
msgstr ""
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr "Dowolny klawisz aby uruchomić konsolę. CTRL-D aby przeładować."
#~ msgid "number of arguments must be 2, or 3"
#~ msgstr "liczba argumentów musi wynosić 2 lub 3"

View File

@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"PO-Revision-Date: 2020-11-30 18:06+0000\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-12-16 17:00+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: \n"
"Language: pt_BR\n"
@ -396,7 +396,7 @@ msgstr "Outro envio já está ativo"
msgid "Array must contain halfwords (type 'H')"
msgstr "Array deve conter meias palavras (tipo 'H')"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Os valores das matrizes devem ser bytes simples."
@ -512,8 +512,8 @@ msgstr "O comprimento do Buffer deve ser um múltiplo de 512"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "O buffer deve ser um múltiplo de 512 bytes"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "O comprimento do buffer deve ter pelo menos 1"
@ -536,7 +536,7 @@ msgstr "O pino bus %d já está em uso"
msgid "Byte buffer must be 16 bytes."
msgstr "O buffer deve ter 16 bytes."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Os bytes devem estar entre 0 e 255."
@ -868,7 +868,7 @@ msgstr "Um endereço esperado"
#: shared-bindings/alarm/__init__.c
msgid "Expected an alarm"
msgstr ""
msgstr "Um alarme era esperado"
#: shared-module/_pixelbuf/PixelBuf.c
#, c-format
@ -1019,7 +1019,7 @@ msgstr "O I2SOut não está disponível"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "IOs 0, 2 & 4 do not support internal pullup in sleep"
msgstr ""
msgstr "IOs 0, 2 e 4 não suportam pullup interno em repouso (sleep)"
#: shared-bindings/aesio/aes.c
#, c-format
@ -1105,6 +1105,10 @@ msgstr "O pino DAC informado é inválido"
msgid "Invalid PWM frequency"
msgstr "Frequência PWM inválida"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr "Pino inválido"
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Argumento inválido"
@ -1321,10 +1325,10 @@ msgstr "Nenhum DAC no chip"
msgid "No DMA channel found"
msgstr "Nenhum canal DMA encontrado"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
msgstr "Nenhum dispositivo I2C no endereço: %x"
#: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/SPI.c
@ -1486,7 +1490,7 @@ msgstr ""
#: ports/esp32s2/common-hal/alarm/__init__.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
msgstr "Apenas um alarme alarm.time pode ser definido."
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
@ -1537,6 +1541,7 @@ msgstr "Permissão negada"
msgid "Pin does not have ADC capabilities"
msgstr "O pino não tem recursos de ADC"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr "Apenas o pino de entrada"
@ -1551,7 +1556,7 @@ msgstr "Número do PIN já está reservado através da EXTI"
#: ports/esp32s2/common-hal/alarm/__init__.c
msgid "PinAlarm not yet implemented"
msgstr ""
msgstr "PinAlarm ainda não foi implementado"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@ -1598,9 +1603,15 @@ msgstr ""
"(heap)"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
"Pressione qualquer tecla para entrar no REPL. Use CTRL-D para recarregar."
"Pressione qualquer tecla para entrar no REPL. Use CTRL-D para recarregar.\n"
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
"Simular o deep sleep até o alarme, até qualquer chave ou até a escrita do "
"arquivo.\n"
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1735,7 +1746,7 @@ msgstr "O contexto do lado do servidor não pode ter nome de host"
msgid "Size not supported"
msgstr "O tamanho não é suportado"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Fatie e avalie os diferentes comprimentos."
@ -1772,7 +1783,7 @@ msgstr "Forneça pelo menos um pino UART"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Supply one of monotonic_time or epoch_time"
msgstr ""
msgstr "Forneça um de monotonic_time ou de epoch_time"
#: shared-bindings/gnss/GNSS.c
msgid "System entry must be gnss.SatelliteSystem"
@ -1848,7 +1859,7 @@ msgstr "A largura do bloco deve dividir exatamente com a largura do bitmap"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Time is in the past."
msgstr ""
msgstr "O tempo está no passado."
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
@ -1964,6 +1975,10 @@ msgstr "Não foi possível ler os dados da paleta de cores"
msgid "Unable to write to nvm."
msgstr "Não é possível gravar no nvm."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr "Não foi possível escrever no sleep_memory."
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "Tipo uuid nrfx inesperado"
@ -2096,6 +2111,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr "A senha do Wi-Fi deve ter entre 8 e 63 caracteres"
#: main.c
msgid "Woken up by alarm.\n"
msgstr "Foi despertado através do alarme.\n"
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr "A escrita não é compatível na Característica"
@ -2178,7 +2197,8 @@ msgstr "os argumentos devem ser ndarrays"
msgid "array and index length must be equal"
msgstr "a matriz e comprimento do índice devem ser iguais"
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "matriz/bytes são necessários no lado direito"
@ -2592,7 +2612,7 @@ msgstr "end_x deve ser um int"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "epoch_time not supported on this board"
msgstr ""
msgstr "O epoch_time não é compatível com esta placa"
#: ports/nrf/common-hal/busio/UART.c
#, c-format
@ -2965,7 +2985,7 @@ msgstr "sintaxe inválida para o número"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "io must be rtc io"
msgstr ""
msgstr "O io deve ser rtc io"
#: py/objtype.c
msgid "issubclass() arg 1 must be a class"
@ -3290,7 +3310,7 @@ msgid "only sample_rate=16000 is supported"
msgstr "apenas sample_rate = 16000 é compatível"
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr ""
"apenas fatias com a etapa=1 (também conhecida como Nenhuma) são compatíveis"
@ -3668,7 +3688,7 @@ msgstr "o trapz está definido para 1D arrays de igual tamanho"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "trigger level must be 0 or 1"
msgstr ""
msgstr "nível do gatilho deve ser 0 ou 1"
#: extmod/ulab/code/linalg/linalg.c
msgid "tuple index out of range"
@ -3814,7 +3834,7 @@ msgstr "os vetores devem ter os mesmos comprimentos"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "wakeup conflict"
msgstr ""
msgstr "conflito de wakeup"
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
msgid "watchdog not initialized"
@ -3888,6 +3908,10 @@ msgstr "zi deve ser de um tipo float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi deve estar na forma (n_section, 2)"
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Pressione qualquer tecla para entrar no REPL. Use CTRL-D para recarregar."
#~ msgid "Only IPv4 SOCK_STREAM sockets supported"
#~ msgstr "São suportados apenas soquetes IPv4 SOCK_STREAM"

View File

@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"PO-Revision-Date: 2020-11-30 18:06+0000\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-12-07 20:26+0000\n"
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sv\n"
@ -392,7 +392,7 @@ msgstr "En annan send är redan aktiv"
msgid "Array must contain halfwords (type 'H')"
msgstr "Matrisen måste innehålla halfwords (typ \"H\")"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Matrisvärden ska bestå av enstaka bytes."
@ -504,8 +504,8 @@ msgstr "Buffertlängd måste vara en multipel av 512"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "Bufferten måste vara en multipel av 512 byte"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Bufferten måste ha minst längd 1"
@ -528,7 +528,7 @@ msgstr "Busspinne %d används redan"
msgid "Byte buffer must be 16 bytes."
msgstr "Byte-buffert måste vara 16 byte."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Bytes måste vara mellan 0 och 255."
@ -859,7 +859,7 @@ msgstr "Förväntade en adress"
#: shared-bindings/alarm/__init__.c
msgid "Expected an alarm"
msgstr ""
msgstr "Förväntade ett larm"
#: shared-module/_pixelbuf/PixelBuf.c
#, c-format
@ -1008,7 +1008,7 @@ msgstr "I2SOut är inte tillgängligt"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "IOs 0, 2 & 4 do not support internal pullup in sleep"
msgstr ""
msgstr "IO 0, 2 & 4 stöder inte intern pullup för sovläge"
#: shared-bindings/aesio/aes.c
#, c-format
@ -1094,6 +1094,10 @@ msgstr "Ogiltig DAC-pinne angiven"
msgid "Invalid PWM frequency"
msgstr "Ogiltig PWM-frekvens"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Ogiltigt argument"
@ -1311,10 +1315,10 @@ msgstr "Ingen DAC på chipet"
msgid "No DMA channel found"
msgstr "Ingen DMA-kanal hittades"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
msgstr "Ingen I2C-enhet på adress: %x"
#: ports/esp32s2/common-hal/busio/SPI.c ports/mimxrt10xx/common-hal/busio/SPI.c
#: ports/stm/common-hal/busio/SPI.c
@ -1476,7 +1480,7 @@ msgstr ""
#: ports/esp32s2/common-hal/alarm/__init__.c
msgid "Only one alarm.time alarm can be set."
msgstr ""
msgstr "Endast ett alarm.time kan ställas in."
#: shared-module/displayio/ColorConverter.c
msgid "Only one color can be transparent at a time"
@ -1525,6 +1529,7 @@ msgstr "Åtkomst nekad"
msgid "Pin does not have ADC capabilities"
msgstr "Pinnen har inte ADC-funktionalitet"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr "Pinnen är enbart ingång"
@ -1539,7 +1544,7 @@ msgstr "PInn-nummer redan reserverat av EXTI"
#: ports/esp32s2/common-hal/alarm/__init__.c
msgid "PinAlarm not yet implemented"
msgstr ""
msgstr "PinAlarm är inte implementerat ännu"
#: shared-bindings/rgbmatrix/RGBMatrix.c
#, c-format
@ -1584,9 +1589,12 @@ msgid "Prefix buffer must be on the heap"
msgstr "Prefixbufferten måste finnas på heap"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
"Tryck på valfri knapp för att gå in i REPL. Använd CTRL-D för att ladda om."
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1721,7 +1729,7 @@ msgstr "Serversidans kontext kan inte ha värdnamn"
msgid "Size not supported"
msgstr "Storleken stöds inte"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Slice och värde har olika längd."
@ -1758,7 +1766,7 @@ msgstr "Ange minst en UART-pinne"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Supply one of monotonic_time or epoch_time"
msgstr ""
msgstr "Ange en av monotonic_time eller epoch_time"
#: shared-bindings/gnss/GNSS.c
msgid "System entry must be gnss.SatelliteSystem"
@ -1833,7 +1841,7 @@ msgstr "Tile-bredd måste vara jämnt delbar med bredd på bitmap"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "Time is in the past."
msgstr ""
msgstr "Tid har passerats."
#: ports/nrf/common-hal/_bleio/Adapter.c
#, c-format
@ -1946,6 +1954,10 @@ msgstr "Det går inte att läsa färgpalettdata"
msgid "Unable to write to nvm."
msgstr "Det gick inte att skriva till nvm."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "Oväntad nrfx uuid-typ"
@ -2074,6 +2086,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr "WiFi-lösenord måste vara mellan 8 och 63 tecken"
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr "Skrivning stöds inte på karaktäristik"
@ -2156,7 +2172,8 @@ msgstr "argumenten måste vara ndarray"
msgid "array and index length must be equal"
msgstr "array och indexlängd måste vara lika"
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "array/bytes krävs på höger sida"
@ -2566,7 +2583,7 @@ msgstr "color ska vara en int"
#: shared-bindings/alarm/time/TimeAlarm.c
msgid "epoch_time not supported on this board"
msgstr ""
msgstr "epoch_time stöds inte av detta kort"
#: ports/nrf/common-hal/busio/UART.c
#, c-format
@ -2939,7 +2956,7 @@ msgstr "ogiltig syntax för tal"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "io must be rtc io"
msgstr ""
msgstr "io måste vara rtc io"
#: py/objtype.c
msgid "issubclass() arg 1 must be a class"
@ -3262,7 +3279,7 @@ msgid "only sample_rate=16000 is supported"
msgstr "enbart sample_rate=16000 stöds"
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr "endast segment med steg=1 (aka Ingen) stöds"
@ -3636,7 +3653,7 @@ msgstr "trapz är definierad för 1D-matriser med samma längd"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "trigger level must be 0 or 1"
msgstr ""
msgstr "triggernivå måste vara 0 eller 1"
#: extmod/ulab/code/linalg/linalg.c
msgid "tuple index out of range"
@ -3782,7 +3799,7 @@ msgstr "vektorer måste ha samma längd"
#: ports/esp32s2/common-hal/alarm/pin/__init__.c
msgid "wakeup conflict"
msgstr ""
msgstr "wakeup-konflikt"
#: ports/esp32s2/common-hal/watchdog/WatchDogTimer.c
msgid "watchdog not initialized"
@ -3856,6 +3873,11 @@ msgstr "zi måste vara av typ float"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi måste vara i formen (n_section, 2)"
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr ""
#~ "Tryck på valfri knapp för att gå in i REPL. Använd CTRL-D för att ladda "
#~ "om."
#~ msgid "Only IPv4 SOCK_STREAM sockets supported"
#~ msgstr "Endast IPv4 SOCK_STREAM sockets stöds"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: circuitpython-cn\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-27 23:57-0500\n"
"POT-Creation-Date: 2020-12-14 12:59-0500\n"
"PO-Revision-Date: 2020-11-19 01:28+0000\n"
"Last-Translator: hexthat <hexthat@gmail.com>\n"
"Language-Team: Chinese Hanyu Pinyin\n"
@ -394,7 +394,7 @@ msgstr "Lìng yīgè fāsòng yǐjīng jīhuó"
msgid "Array must contain halfwords (type 'H')"
msgstr "Shùzǔ bìxū bāohán bàn zìshù (type 'H')"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Array values should be single bytes."
msgstr "Shùzǔ zhí yīnggāi shì dāngè zì jié."
@ -506,8 +506,8 @@ msgstr "Huǎn chōng qū cháng dù bì xū wéi 512 de bèi shù"
msgid "Buffer must be a multiple of 512 bytes"
msgstr "Huǎn chōng qū bì xū shì 512 zì jié de bèi shù"
#: shared-bindings/bitbangio/I2C.c shared-bindings/busdevice/I2CDevice.c
#: shared-bindings/busio/I2C.c
#: shared-bindings/adafruit_bus_device/I2CDevice.c
#: shared-bindings/bitbangio/I2C.c shared-bindings/busio/I2C.c
msgid "Buffer must be at least length 1"
msgstr "Huǎnchōng qū bìxū zhìshǎo chángdù 1"
@ -530,7 +530,7 @@ msgstr "Zǒngxiàn yǐn jiǎo %d yǐ zài shǐyòng zhōng"
msgid "Byte buffer must be 16 bytes."
msgstr "Zì jié huǎnchōng qū bìxū shì 16 zì jié."
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Bytes must be between 0 and 255."
msgstr "Zì jié bìxū jiè yú 0 dào 255 zhī jiān."
@ -1092,6 +1092,10 @@ msgstr "Tí gōng liǎo wúxiào de DAC yǐn jiǎo"
msgid "Invalid PWM frequency"
msgstr "Wúxiào de PWM pínlǜ"
#: ports/esp32s2/common-hal/analogio/AnalogIn.c
msgid "Invalid Pin"
msgstr ""
#: py/moduerrno.c shared-module/rgbmatrix/RGBMatrix.c
msgid "Invalid argument"
msgstr "Wúxiào de cānshù"
@ -1308,7 +1312,7 @@ msgstr "Méiyǒu DAC zài xīnpiàn shàng de"
msgid "No DMA channel found"
msgstr "Wèi zhǎodào DMA píndào"
#: shared-module/busdevice/I2CDevice.c
#: shared-module/adafruit_bus_device/I2CDevice.c
#, c-format
msgid "No I2C device at address: %x"
msgstr ""
@ -1521,6 +1525,7 @@ msgstr "Quánxiàn bèi jùjué"
msgid "Pin does not have ADC capabilities"
msgstr "Pin méiyǒu ADC nénglì"
#: shared-bindings/adafruit_bus_device/SPIDevice.c
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pin is input only"
msgstr "Yǐn jiǎo jǐn shūrù"
@ -1577,8 +1582,12 @@ msgid "Prefix buffer must be on the heap"
msgstr "Qiánzhuì huǎnchōng qū bìxū zài duī shàng"
#: main.c
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgstr "Àn xià rènhé jiàn jìnrù REPL. Shǐyòng CTRL-D chóngxīn jiāzài."
msgid "Press any key to enter the REPL. Use CTRL-D to reload.\n"
msgstr ""
#: main.c
msgid "Pretending to deep sleep until alarm, any key or file write.\n"
msgstr ""
#: shared-bindings/digitalio/DigitalInOut.c
msgid "Pull not used when direction is output."
@ -1713,7 +1722,7 @@ msgstr "Fúwùqì duān shàngxiàwén bùnéng jùyǒu zhǔjī míng"
msgid "Size not supported"
msgstr "bù zhī chí dà xiǎo"
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "Slice and value different lengths."
msgstr "Qiēpiàn hé zhí bùtóng chángdù."
@ -1937,6 +1946,10 @@ msgstr "Wúfǎ dòu qǔ sè tiáo shùjù"
msgid "Unable to write to nvm."
msgstr "Wúfǎ xiě rù nvm."
#: shared-bindings/alarm/SleepMemory.c
msgid "Unable to write to sleep_memory."
msgstr ""
#: ports/nrf/common-hal/_bleio/UUID.c
msgid "Unexpected nrfx uuid type"
msgstr "Yìwài de nrfx uuid lèixíng"
@ -2066,6 +2079,10 @@ msgstr ""
msgid "WiFi password must be between 8 and 63 characters"
msgstr "WiFi mìmǎ bìxū jiè yú 8 dào 63 gè zìfú zhī jiān"
#: main.c
msgid "Woken up by alarm.\n"
msgstr ""
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
msgid "Writes not supported on Characteristic"
msgstr "Tèzhēng bù zhīchí xiě rù"
@ -2148,7 +2165,8 @@ msgstr "cānshù bìxū shì ndarrays"
msgid "array and index length must be equal"
msgstr ""
#: py/objarray.c shared-bindings/nvm/ByteArray.c
#: py/objarray.c shared-bindings/alarm/SleepMemory.c
#: shared-bindings/nvm/ByteArray.c
msgid "array/bytes required on right side"
msgstr "yòu cè xūyào shùzǔ/zì jié"
@ -3252,7 +3270,7 @@ msgid "only sample_rate=16000 is supported"
msgstr "Jǐn zhīchí cǎiyàng lǜ = 16000"
#: py/objarray.c py/objstr.c py/objstrunicode.c py/objtuple.c
#: shared-bindings/nvm/ByteArray.c
#: shared-bindings/alarm/SleepMemory.c shared-bindings/nvm/ByteArray.c
msgid "only slices with step=1 (aka None) are supported"
msgstr "jǐn zhīchí bù zhǎng = 1(jí wú) de qiēpiàn"
@ -3845,6 +3863,9 @@ msgstr "zi bìxū wèi fú diǎn xíng"
msgid "zi must be of shape (n_section, 2)"
msgstr "zi bìxū jùyǒu xíngzhuàng (n_section,2)"
#~ msgid "Press any key to enter the REPL. Use CTRL-D to reload."
#~ msgstr "Àn xià rènhé jiàn jìnrù REPL. Shǐyòng CTRL-D chóngxīn jiāzài."
#~ msgid "Only IPv4 SOCK_STREAM sockets supported"
#~ msgstr "Jǐn zhīchí IPv4 SOCK_STREAM tào jiē zì"

12
main.c
View File

@ -112,9 +112,6 @@ STATIC void start_mp(supervisor_allocation* heap) {
reset_status_led();
autoreload_stop();
supervisor_workflow_reset();
#if CIRCUITPY_ALARM
alarm_reset();
#endif
// Stack limit should be less than real stack size, so we have a chance
// to recover from limit hit. (Limit is measured in bytes.)
@ -158,6 +155,13 @@ STATIC void start_mp(supervisor_allocation* heap) {
mp_obj_list_init(mp_sys_argv, 0);
#if CIRCUITPY_ALARM
// Record which alarm woke us up, if any. An object may be created so the heap must be functional.
alarm_save_wakeup_alarm();
// Reset alarm module only after we retrieved the wakeup alarm.
alarm_reset();
#endif
#if CIRCUITPY_NETWORK
network_module_init();
#endif
@ -285,6 +289,7 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
filesystem_flush();
supervisor_allocation* heap = allocate_remaining_memory();
start_mp(heap);
found_main = maybe_run_list(supported_filenames, &result);
#if CIRCUITPY_FULL_BUILD
if (!found_main){
@ -354,7 +359,6 @@ STATIC bool run_code_py(safe_mode_t safe_mode) {
serial_write_compressed(translate("Woken up by alarm.\n"));
board_init();
supervisor_set_run_reason(RUN_REASON_STARTUP);
// TODO: Reset any volatile memory the user may have access to.
return true;
}
#endif

View File

@ -94,21 +94,21 @@ endif
ifeq ($(CHIP_FAMILY), samd51)
PERIPHERALS_CHIP_FAMILY=sam_d5x_e5x
OPTIMIZATION_FLAGS ?= -O2
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
# TinyUSB defines
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_SAMD51 -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024
endif
ifeq ($(CHIP_FAMILY), same51)
PERIPHERALS_CHIP_FAMILY=sam_d5x_e5x
OPTIMIZATION_FLAGS ?= -O2
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
# TinyUSB defines
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_SAME5X -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024
endif
ifeq ($(CHIP_FAMILY), same54)
PERIPHERALS_CHIP_FAMILY=sam_d5x_e5x
OPTIMIZATION_FLAGS ?= -O2
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
# TinyUSB defines
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_SAME5X -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_TUD_CDC_RX_BUFSIZE=256 -DCFG_TUD_MIDI_TX_BUFSIZE=128 -DCFG_TUD_CDC_TX_BUFSIZE=256 -DCFG_TUD_MSC_BUFSIZE=1024
endif
@ -116,6 +116,9 @@ endif
# option to override default optimization level, set in boards/$(BOARD)/mpconfigboard.mk
CFLAGS += $(OPTIMIZATION_FLAGS)
# Add -ftree-vrp optimization and checking to all builds. It's not enabled for -Os by default.
CFLAGS += -ftree-vrp
$(echo PERIPHERALS_CHIP_FAMILY=$(PERIPHERALS_CHIP_FAMILY))
#Debugging/Optimization
ifeq ($(DEBUG), 1)

View File

@ -9,3 +9,5 @@ CHIP_FAMILY = samd21
INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0
SUPEROPT_GC = 0

View File

@ -16,3 +16,5 @@ CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_VECTORIO = 0
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_DotStar
SUPEROPT_GC = 0

View File

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

View File

@ -0,0 +1,33 @@
#define MICROPY_HW_BOARD_NAME "StackRduino M0 PRO"
#define MICROPY_HW_MCU_NAME "samd21g18"
#define MICROPY_HW_LED_STATUS (&pin_PA17)
#define MICROPY_HW_NEOPIXEL (&pin_PA06)
#define SPI_FLASH_BAUDRATE (8000000)
#define SPI_FLASH_MOSI_PIN &pin_PB22
#define SPI_FLASH_MISO_PIN &pin_PB03
#define SPI_FLASH_SCK_PIN &pin_PB23
#define SPI_FLASH_CS_PIN &pin_PA27
// These are pins not to reset.
#define MICROPY_PORT_A (PORT_PA06)
#define MICROPY_PORT_B (0)
#define MICROPY_PORT_C (0)
#define BOARD_HAS_CRYSTAL 1
#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)
// USB is always used internally so skip the pin objects for it.
#define IGNORE_PIN_PA24 1
#define IGNORE_PIN_PA25 1

View File

@ -0,0 +1,58 @@
USB_VID = 0x1209
USB_PID = 0xE3E3
USB_PRODUCT = "StackRduino M0 PRO"
USB_MANUFACTURER = "StackRduino"
CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
SPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ"
LONGINT_IMPL = MPZ
CIRCUITPY_BITBANGIO = 0
CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_COUNTIO = 0
CIRCUITPY_I2CPERIPHERAL = 0
CIRCUITPY_VECTORIO = 0
CIRCUITPY_BUSDEVICE = 0
CFLAGS_INLINE_LIMIT = 55
SUPEROPT_GC = 0
CFLAGS_BOARD = --param max-inline-insns-auto=15
ifeq ($(TRANSLATION), ja)
RELEASE_NEEDS_CLEAN_BUILD = 1
CFLAGS_INLINE_LIMIT = 35
endif
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
ifeq ($(TRANSLATION), pl)
RELEASE_NEEDS_CLEAN_BUILD = 1
CFLAGS_INLINE_LIMIT = 35
SUPEROPT_VM = 0
endif
ifeq ($(TRANSLATION), fr)
RELEASE_NEEDS_CLEAN_BUILD = 1
CFLAGS_INLINE_LIMIT = 35
SUPEROPT_VM = 0
endif
ifeq ($(TRANSLATION), pt_BR)
RELEASE_NEEDS_CLEAN_BUILD = 1
CFLAGS_INLINE_LIMIT = 35
SUPEROPT_VM = 0
endif
ifeq ($(TRANSLATION), es)
RELEASE_NEEDS_CLEAN_BUILD = 1
CFLAGS_INLINE_LIMIT = 35
SUPEROPT_VM = 0
endif

View File

@ -0,0 +1,40 @@
#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_PA02) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB08) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB09) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA05) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB02) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB10) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA12) },
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA11) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA11) },
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA10) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA22) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA23) },
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA08) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA09) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA14) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA15) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA21) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA06) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA17) },
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_PA28) },
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_PA28) },
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_PA13) },
{ MP_ROM_QSTR(MP_QSTR_CHRG_EN), MP_ROM_PTR(&pin_PA13) },
{ 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);

View File

@ -9,8 +9,8 @@ CHIP_VARIANT = SAMD21G18A
CHIP_FAMILY = samd21
SPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "GD25Q16C"
EXTERNAL_FLASH_DEVICE_COUNT = 2
EXTERNAL_FLASH_DEVICES = "GD25Q16C, GD25Q64C"
LONGINT_IMPL = MPZ
CIRCUITPY_AUDIOIO = 1

View File

@ -6,5 +6,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_GATE_OUT), MP_ROM_PTR(&pin_PA11) },
{ MP_ROM_QSTR(MP_QSTR_GATE_IN), MP_ROM_PTR(&pin_PA14) },
{ MP_ROM_QSTR(MP_QSTR_PITCH_IN), MP_ROM_PTR(&pin_PB08) },
/* Board revisions starting from v5 have PB10 tied to ground. */
{ MP_ROM_QSTR(MP_QSTR_V5), MP_ROM_PTR(&pin_PB10) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

View File

@ -197,7 +197,7 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
#endif
#ifdef SAM_D5X_E5X
DAC->EVCTRL.reg |= DAC_EVCTRL_STARTEI0;
DAC->DACCTRL[0].reg = DAC_DACCTRL_CCTRL_CC100K |
DAC->DACCTRL[0].reg = DAC_DACCTRL_CCTRL_CC12M |
DAC_DACCTRL_ENABLE |
DAC_DACCTRL_LEFTADJ;
DAC->CTRLB.reg = DAC_CTRLB_REFSEL_VREFPU;
@ -206,7 +206,7 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
#ifdef SAM_D5X_E5X
if (channel1_enabled) {
DAC->EVCTRL.reg |= DAC_EVCTRL_STARTEI1;
DAC->DACCTRL[1].reg = DAC_DACCTRL_CCTRL_CC100K |
DAC->DACCTRL[1].reg = DAC_DACCTRL_CCTRL_CC12M |
DAC_DACCTRL_ENABLE |
DAC_DACCTRL_LEFTADJ;
DAC->CTRLB.reg = DAC_CTRLB_REFSEL_VREFPU;

View File

@ -82,7 +82,8 @@ void frequencyin_emergency_cancel_capture(uint8_t index) {
#ifdef SAM_D5X_E5X
NVIC_EnableIRQ(EIC_0_IRQn + self->channel);
#endif
mp_raise_RuntimeError(translate("Frequency captured is above capability. Capture Paused."));
// Frequency captured is above capability. Capture paused.
// We can't raise an error here; we're in an interrupt handler.
}
void frequencyin_interrupt_handler(uint8_t index) {

View File

@ -122,7 +122,7 @@ CFLAGS += \
-fdata-sections \
-Wall \
OPTIMIZATION_FLAGS ?= -O2
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
CFLAGS += $(OPTIMIZATION_FLAGS)

View File

@ -106,6 +106,8 @@ INC += -isystem esp-idf/components/heap/include
INC += -isystem esp-idf/components/esp_system/include
INC += -isystem esp-idf/components/spi_flash/include
INC += -isystem esp-idf/components/nvs_flash/include
INC += -isystem esp-idf/components/app_update/include
INC += -isystem esp-idf/components/bootloader_support/include
INC += -I$(BUILD)/esp-idf/config
CFLAGS += -DHAVE_CONFIG_H \
@ -118,7 +120,7 @@ CFLAGS += -DSTACK_CANARY_VALUE=0xa5a5a5a5
#Debugging/Optimization
ifeq ($(DEBUG), 1)
CFLAGS += -ggdb
CFLAGS += -DDEBUG -ggdb
OPTIMIZATION_FLAGS ?= -Og
# You may want to enable these flags to make setting breakpoints easier.
# CFLAGS += -fno-inline -fno-ipa-sra
@ -336,10 +338,10 @@ $(BUILD)/firmware.uf2: $(BUILD)/circuitpython-firmware.bin
$(Q)$(PYTHON3) $(TOP)/tools/uf2/utils/uf2conv.py -f 0xbfdd4eee -b 0x0000 -c -o $@ $^
flash: $(BUILD)/firmware.bin
esptool.py --chip esp32s2 -p $(PORT) --no-stub -b 460800 --before=default_reset --after=no_reset write_flash $(FLASH_FLAGS) 0x0000 $^
esptool.py --chip esp32s2 -p $(PORT) -b 460800 --before=default_reset --after=no_reset write_flash $(FLASH_FLAGS) 0x0000 $^
flash-circuitpython-only: $(BUILD)/circuitpython-firmware.bin
esptool.py --chip esp32s2 -p $(PORT) --no-stub -b 460800 --before=default_reset --after=no_reset write_flash $(FLASH_FLAGS) 0x10000 $^
esptool.py --chip esp32s2 -p $(PORT) -b 460800 --before=default_reset --after=no_reset write_flash $(FLASH_FLAGS) 0x10000 $^
include $(TOP)/py/mkrules.mk

View File

@ -115,8 +115,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
common_hal_busio_spi_construct(spi, &pin_GPIO36, &pin_GPIO35, NULL);

View File

@ -26,7 +26,7 @@
//Micropython setup
#define MICROPY_HW_BOARD_NAME "MagTag"
#define MICROPY_HW_BOARD_NAME "Adafruit MagTag"
#define MICROPY_HW_MCU_NAME "ESP32S2"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO1)

View File

@ -26,7 +26,7 @@
//Micropython setup
#define MICROPY_HW_BOARD_NAME "Metro ESP32S2"
#define MICROPY_HW_BOARD_NAME "Adafruit Metro ESP32S2"
#define MICROPY_HW_MCU_NAME "ESP32S2"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO45)

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
}
bool board_requests_safe_mode(void) {

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
}
bool board_requests_safe_mode(void) {

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
}
bool board_requests_safe_mode(void) {

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
}
bool board_requests_safe_mode(void) {

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
// SPI Flash and RAM
common_hal_never_reset_pin(&pin_GPIO26);

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
}
bool board_requests_safe_mode(void) {

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
// Crystal
common_hal_never_reset_pin(&pin_GPIO15);

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
//Crystal
common_hal_never_reset_pin(&pin_GPIO15);

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
// SPI Flash and RAM
common_hal_never_reset_pin(&pin_GPIO26);

View File

@ -34,8 +34,10 @@ void board_init(void) {
common_hal_never_reset_pin(&pin_GPIO20);
// Debug UART
#ifdef DEBUG
common_hal_never_reset_pin(&pin_GPIO43);
common_hal_never_reset_pin(&pin_GPIO44);
#endif /* DEBUG */
// SPI Flash and RAM
common_hal_never_reset_pin(&pin_GPIO26);

View File

@ -0,0 +1,66 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 microDev
* Copyright (c) 2020 Dan Halbert for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include <string.h>
#include "py/runtime.h"
#include "common-hal/alarm/SleepMemory.h"
#include "esp_log.h"
#include "esp_sleep.h"
// Data storage for singleton instance of SleepMemory.
// Might be RTC_SLOW_MEM or RTC_FAST_MEM, depending on setting of CONFIG_ESP32S2_RTCDATA_IN_FAST_MEM.
static RTC_DATA_ATTR uint8_t _sleep_mem[SLEEP_MEMORY_LENGTH];
void alarm_sleep_memory_reset(void) {
// ESP-IDF build system takes care of doing esp_sleep_pd_config() or the equivalentwith
// the correct settings, depending on which RTC mem we are using.
// https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/api-reference/system/sleep_modes.html#power-down-of-rtc-peripherals-and-memories
}
uint32_t common_hal_alarm_sleep_memory_get_length(alarm_sleep_memory_obj_t *self) {
return sizeof(_sleep_mem);
}
bool common_hal_alarm_sleep_memory_set_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, const uint8_t* values, uint32_t len) {
if (start_index + len > sizeof(_sleep_mem)) {
return false;
}
memcpy((uint8_t *) (_sleep_mem + start_index), values, len);
return true;
}
void common_hal_alarm_sleep_memory_get_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, uint8_t* values, uint32_t len) {
if (start_index + len > sizeof(_sleep_mem)) {
return;
}
memcpy(values, (uint8_t *) (_sleep_mem + start_index), len);
}

View File

@ -0,0 +1,53 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 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.
*/
#ifndef MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ALARM_SLEEPMEMORY_H
#define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ALARM_SLEEPMEMORY_H
#include "py/obj.h"
// There are several places we could store persistent data for SleepMemory:
//
// RTC registers: There are a few 32-bit registers maintained during deep sleep.
// We are already using one for saving sleep information during deep sleep.
//
// RTC Fast Memory: 8kB, also used for deep-sleep power-on stub.
// RTC Slow Memory: 8kB, also used for the ULP (tiny co-processor available during sleep).
//
// The ESP-IDF build system takes care of the power management of these regions.
// RTC_DATA_ATTR will allocate storage in RTC_SLOW_MEM unless CONFIG_ESP32S2_RTCDATA_IN_FAST_MEM
// is set. Any memory not allocated by us can be used by the ESP-IDF for heap or other purposes.
// Use half of RTC_SLOW_MEM or RTC_FAST_MEM.
#define SLEEP_MEMORY_LENGTH (4096)
typedef struct {
mp_obj_base_t base;
} alarm_sleep_memory_obj_t;
extern void alarm_sleep_memory_reset(void);
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ALARM_SLEEPMEMORY_H

View File

@ -1,10 +1,10 @@
/*
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2016 Scott Shawcroft for Adafruit Industries
* Copyright (c) 2019 Lucian Copeland for Adafruit Industries
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
* Copyright (c) 2020 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
@ -30,6 +30,7 @@
#include "py/runtime.h"
#include "shared-bindings/alarm/pin/PinAlarm.h"
#include "shared-bindings/alarm/SleepMemory.h"
#include "shared-bindings/alarm/time/TimeAlarm.h"
#include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/wifi/__init__.h"
@ -41,8 +42,17 @@
#include "esp_sleep.h"
// Singleton instance of SleepMemory.
const alarm_sleep_memory_obj_t alarm_sleep_memory_obj = {
.base = {
.type = &alarm_sleep_memory_type,
},
};
void alarm_reset(void) {
alarm_time_timealarm_reset();
alarm_sleep_memory_reset();
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_ALL);
}

View File

@ -27,6 +27,10 @@
#ifndef MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ALARM__INIT__H
#define MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ALARM__INIT__H
void alarm_reset(void);
#include "common-hal/alarm/SleepMemory.h"
const alarm_sleep_memory_obj_t alarm_sleep_memory_obj;
extern void alarm_reset(void);
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_ALARM__INIT__H

View File

@ -52,6 +52,7 @@ mp_obj_t alarm_time_timealarm_get_wakeup_alarm(size_t n_alarms, const mp_obj_t *
alarm_time_time_alarm_obj_t *timer = m_new_obj(alarm_time_time_alarm_obj_t);
timer->base.type = &alarm_time_time_alarm_type;
// TODO: Set monotonic_time based on the RTC state.
timer->monotonic_time = 0.0f;
return timer;
}

View File

@ -34,8 +34,10 @@
#include "shared-bindings/microcontroller/Pin.h"
#include <string.h>
#define DEFAULT_VREF 1100
#define NO_OF_SAMPLES 64
#define NO_OF_SAMPLES 2
#define ATTENUATION ADC_ATTEN_DB_11
#define DATA_WIDTH ADC_WIDTH_BIT_13
@ -66,11 +68,14 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
adc1_config_channel_atten((adc1_channel_t)self->pin->adc_channel, ATTENUATION);
} else if (self->pin->adc_index == ADC_UNIT_2) {
adc2_config_channel_atten((adc2_channel_t)self->pin->adc_channel, ATTENUATION);
} else {
mp_raise_ValueError(translate("Invalid Pin"));
}
// Automatically select calibration process depending on status of efuse
esp_adc_cal_characteristics_t *adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));
esp_adc_cal_characterize(self->pin->adc_index, ATTENUATION, DATA_WIDTH, DEFAULT_VREF, adc_chars);
esp_adc_cal_characteristics_t adc_chars;
memset(&adc_chars, 0, sizeof(adc_chars));
esp_adc_cal_characterize(self->pin->adc_index, ATTENUATION, DATA_WIDTH, DEFAULT_VREF, &adc_chars);
uint32_t adc_reading = 0;
//Multisampling
@ -89,7 +94,7 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
adc_reading /= NO_OF_SAMPLES;
// This corrects non-linear regions of the ADC range with a LUT, so it's a better reading than raw
uint32_t voltage = esp_adc_cal_raw_to_voltage(adc_reading, adc_chars);
uint32_t voltage = esp_adc_cal_raw_to_voltage(adc_reading, &adc_chars);
return voltage * ((1 << 16) - 1)/3300;
}

View File

@ -0,0 +1,139 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 microDev
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "common-hal/dualbank/__init__.h"
#include "shared-bindings/dualbank/__init__.h"
#include <string.h>
#include "esp_log.h"
#include "esp_ota_ops.h"
static const esp_partition_t *update_partition = NULL;
static esp_ota_handle_t update_handle = 0;
static const char *TAG = "dualbank";
void dualbank_reset(void) {
// should use `abort` instead of `end`
// but not in idf v4.2
// esp_ota_abort(update_handle);
if (esp_ota_end(update_handle) == ESP_OK) {
update_handle = 0;
update_partition = NULL;
}
}
static void __attribute__((noreturn)) task_fatal_error(void) {
ESP_LOGE(TAG, "Exiting task due to fatal error...");
mp_raise_RuntimeError(translate("Update Failed"));
}
void common_hal_dualbank_flash(const void *buf, const size_t len, const size_t offset) {
esp_err_t err;
const esp_partition_t *running = esp_ota_get_running_partition();
const esp_partition_t *last_invalid = esp_ota_get_last_invalid_partition();
if (update_partition == NULL) {
update_partition = esp_ota_get_next_update_partition(NULL);
ESP_LOGI(TAG, "Running partition type %d subtype %d (offset 0x%08x)",
running->type, running->subtype, running->address);
ESP_LOGI(TAG, "Writing partition type %d subtype %d (offset 0x%08x)\n",
update_partition->type, update_partition->subtype, update_partition->address);
assert(update_partition != NULL);
}
if (update_handle == 0) {
if (len > sizeof(esp_image_header_t) + sizeof(esp_image_segment_header_t) + sizeof(esp_app_desc_t)) {
esp_app_desc_t new_app_info;
memcpy(&new_app_info, &((char *)buf)[sizeof(esp_image_header_t) + sizeof(esp_image_segment_header_t)], sizeof(esp_app_desc_t));
ESP_LOGI(TAG, "New firmware version: %s", new_app_info.version);
esp_app_desc_t running_app_info;
if (esp_ota_get_partition_description(running, &running_app_info) == ESP_OK) {
ESP_LOGI(TAG, "Running firmware version: %s", running_app_info.version);
}
esp_app_desc_t invalid_app_info;
if (esp_ota_get_partition_description(last_invalid, &invalid_app_info) == ESP_OK) {
ESP_LOGI(TAG, "Last invalid firmware version: %s", invalid_app_info.version);
}
// check new version with running version
if (memcmp(new_app_info.version, running_app_info.version, sizeof(new_app_info.version)) == 0) {
ESP_LOGW(TAG, "New version is the same as running version.");
task_fatal_error();
}
// check new version with last invalid partition
if (last_invalid != NULL) {
if (memcmp(new_app_info.version, invalid_app_info.version, sizeof(new_app_info.version)) == 0) {
ESP_LOGW(TAG, "New version is the same as invalid version.");
task_fatal_error();
}
}
err = esp_ota_begin(update_partition, OTA_WITH_SEQUENTIAL_WRITES, &update_handle);
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_ota_begin failed (%s)", esp_err_to_name(err));
task_fatal_error();
}
} else {
ESP_LOGE(TAG, "received package is not fit len");
task_fatal_error();
}
}
if (offset == 0) {
err = esp_ota_write(update_handle, buf, len);
} else {
err = esp_ota_write_with_offset(update_handle, buf, len, offset);
}
if (err != ESP_OK) {
ESP_LOGE(TAG, "esp_ota_write failed (%s)", esp_err_to_name(err));
task_fatal_error();
}
}
void common_hal_dualbank_switch(void) {
if (esp_ota_end(update_handle) == ESP_OK) {
update_handle = 0;
update_partition = NULL;
}
esp_err_t err = esp_ota_set_boot_partition(esp_ota_get_next_update_partition(NULL));
if (err != ESP_OK) {
if (err == ESP_ERR_OTA_VALIDATE_FAILED) {
ESP_LOGE(TAG, "Image validation failed, image is corrupted");
mp_raise_RuntimeError(translate("Firmware image is invalid"));
}
ESP_LOGE(TAG, "esp_ota_set_boot_partition failed (%s)!", esp_err_to_name(err));
task_fatal_error();
}
}

View File

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

View File

@ -44,6 +44,20 @@ STATIC uint32_t in_use[2];
bool apa102_mosi_in_use;
bool apa102_sck_in_use;
STATIC void floating_gpio_reset(gpio_num_t pin_number) {
// This is the same as gpio_reset_pin(), but without the pullup.
// Note that gpio_config resets the iomatrix to GPIO_FUNC as well.
gpio_config_t cfg = {
.pin_bit_mask = BIT64(pin_number),
.mode = GPIO_MODE_DISABLE,
.pull_up_en = false,
.pull_down_en = false,
.intr_type = GPIO_INTR_DISABLE,
};
gpio_config(&cfg);
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[pin_number], 0);
}
void never_reset_pin_number(gpio_num_t pin_number) {
if (pin_number == -1 ) {
return;
@ -63,6 +77,8 @@ void reset_pin_number(gpio_num_t pin_number) {
never_reset_pins[pin_number / 32] &= ~(1 << pin_number % 32);
in_use[pin_number / 32] &= ~(1 << pin_number % 32);
floating_gpio_reset(pin_number);
#ifdef MICROPY_HW_NEOPIXEL
if (pin_number == MICROPY_HW_NEOPIXEL->number) {
neopixel_in_use = false;
@ -83,9 +99,7 @@ void reset_all_pins(void) {
(never_reset_pins[i / 32] & (1 << i % 32)) != 0) {
continue;
}
gpio_set_direction(i, GPIO_MODE_DEF_INPUT);
gpio_pullup_dis(i);
gpio_pulldown_dis(i);
floating_gpio_reset(i);
}
in_use[0] = 0;
in_use[1] = 0;

View File

@ -105,6 +105,10 @@ mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self) {
}
void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self) {
// Return early if self->current_scan is NULL to avoid hang
if (self->current_scan == NULL) {
return;
}
// Free the memory used to store the found aps.
wifi_scannednetworks_deinit(self->current_scan);
self->current_scan = NULL;

View File

@ -19,6 +19,7 @@ CIRCUITPY_AUDIOBUSIO = 0
CIRCUITPY_AUDIOIO = 0
CIRCUITPY_CANIO = 1
CIRCUITPY_COUNTIO = 1
CIRCUITPY_DUALBANK = 1
CIRCUITPY_FREQUENCYIO = 1
CIRCUITPY_I2CPERIPHERAL = 0
CIRCUITPY_ROTARYIO = 1

View File

@ -41,6 +41,7 @@
#include "common-hal/busio/I2C.h"
#include "common-hal/busio/SPI.h"
#include "common-hal/busio/UART.h"
#include "common-hal/dualbank/__init__.h"
#include "common-hal/ps2io/Ps2.h"
#include "common-hal/pulseio/PulseIn.h"
#include "common-hal/pwmio/PWMOut.h"
@ -123,6 +124,10 @@ void reset_port(void) {
analogout_reset();
#endif
#if CIRCUITPY_DUALBANK
dualbank_reset();
#endif
#if CIRCUITPY_PS2IO
ps2_reset();
#endif

View File

@ -80,7 +80,7 @@ ifeq ($(DEBUG), 1)
OPTIMIZATION_FLAGS ?= -Og
else
CFLAGS += -DNDEBUG -ggdb3
OPTIMIZATION_FLAGS ?= -O2
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
# TODO: Test with -flto
### CFLAGS += -flto
endif

View File

@ -75,7 +75,7 @@ INC += \
# NDEBUG disables assert() statements. This reduces code size pretty dramatically, per tannewt.
CFLAGS += -Os -DNDEBUG -ffreestanding
CFLAGS += -Os -ftree-vrp -DNDEBUG -ffreestanding
# TinyUSB defines
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_MIMXRT10XX -DCFG_TUD_MIDI_RX_BUFSIZE=512 -DCFG_TUD_CDC_RX_BUFSIZE=512 -DCFG_TUD_MIDI_TX_BUFSIZE=512 -DCFG_TUD_CDC_TX_BUFSIZE=512 -DCFG_TUD_MSC_BUFSIZE=1024
@ -108,7 +108,7 @@ CFLAGS += \
-g3 -Wno-unused-parameter \
-ffunction-sections -fdata-sections -fstack-usage
OPTIMIZATION_FLAGS ?= -O2
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
CFLAGS += $(OPTIMIZATION_FLAGS)

View File

@ -1,4 +1,4 @@
#define MICROPY_HW_BOARD_NAME "Feather MIMXRT1011"
#define MICROPY_HW_BOARD_NAME "Adafruit Feather MIMXRT1011"
#define MICROPY_HW_MCU_NAME "IMXRT1011DAE5A"
#define MICROPY_HW_NEOPIXEL (&pin_GPIO_00)

View File

@ -89,7 +89,7 @@ ifeq ($(DEBUG), 1)
CFLAGS += -ggdb3
OPTIMIZATION_FLAGS = -Og
else
OPTIMIZATION_FLAGS ?= -O2
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
CFLAGS += -DNDEBUG -ggdb3
CFLAGS += -flto -flto-partition=none
endif

View File

@ -0,0 +1,4 @@
# Electronic Cats BastBLE
The [BastBLE](https://electroniccats.com/store/bast-ble/) based on Nordic nRF 52840 and containing
a powerful Cortex M4F. This board include a external memory QSPI flash.

View File

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

View File

@ -0,0 +1,25 @@
#include "nrfx/hal/nrf_gpio.h"
#define MICROPY_HW_BOARD_NAME "BastBLE"
#define MICROPY_HW_MCU_NAME "nRF52840"
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
#if QSPI_FLASH_FILESYSTEM
#define MICROPY_QSPI_DATA0 NRF_GPIO_PIN_MAP(0, 30)
#define MICROPY_QSPI_DATA1 NRF_GPIO_PIN_MAP(0, 29)
#define MICROPY_QSPI_DATA2 NRF_GPIO_PIN_MAP(0, 28)
#define MICROPY_QSPI_DATA3 NRF_GPIO_PIN_MAP(0, 2)
#define MICROPY_QSPI_SCK NRF_GPIO_PIN_MAP(0, 3)
#define MICROPY_QSPI_CS NRF_GPIO_PIN_MAP(0, 26)
#endif
#define DEFAULT_I2C_BUS_SCL (&pin_P1_10)
#define DEFAULT_I2C_BUS_SDA (&pin_P1_11)
#define DEFAULT_SPI_BUS_SCK (&pin_P1_00)
#define DEFAULT_SPI_BUS_MOSI (&pin_P1_06)
#define DEFAULT_SPI_BUS_MISO (&pin_P0_15)
#define DEFAULT_UART_BUS_RX (&pin_P0_09)
#define DEFAULT_UART_BUS_TX (&pin_P0_10)

View File

@ -0,0 +1,10 @@
USB_VID = 0x1209
USB_PID = 0x805A
USB_PRODUCT = "BastBLE"
USB_MANUFACTURER = "ElectronicCats"
MCU_CHIP = nrf52840
QSPI_FLASH_FILESYSTEM = 1
EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = "GD25Q16C"

View File

@ -0,0 +1,47 @@
#include "shared-bindings/board/__init__.h"
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_P1_11) },
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_P1_10) },
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_P1_00) },
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_P1_02) },
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_P1_13) },
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_P1_06) },
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_P0_15) },
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_P0_06) },
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_P1_09) },
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_P0_08) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_P0_26) },
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_P0_07) },
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_02) },
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_P0_28) },
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_P0_05) },
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_P0_03) },
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_P0_30) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P1_11) },
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_P0_29) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P1_10) },
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P1_06) },
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P0_15) },
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P1_00) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_P0_24) },
{ MP_ROM_QSTR(MP_QSTR_AREF), MP_ROM_PTR(&pin_P0_31) },
// voltage sense battery
{ MP_ROM_QSTR(MP_QSTR_VBAT), MP_ROM_PTR(&pin_P0_26) },
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P0_10) },
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P0_09) },
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -16,12 +16,14 @@ CIRCUITPY_AUDIOMP3 = 0
CIRCUITPY_BUSIO = 1
CIRCUITPY_DISPLAYIO = 0
CIRCUITPY_FRAMEBUFFERIO = 0
CIRCUITPY_GAMEPAD = 0
CIRCUITPY_NEOPIXEL_WRITE = 0
CIRCUITPY_NVM = 0
CIRCUITPY_PIXELBUF = 0
CIRCUITPY_RGBMATRIX = 0
CIRCUITPY_ROTARYIO = 0
CIRCUITPY_RTC = 1
CIRCUITPY_SDCARDIO = 0
CIRCUITPY_TOUCHIO = 0
CIRCUITPY_ULAB = 0
CIRCUITPY_WATCHDOG = 1

View File

@ -470,7 +470,16 @@ mp_obj_t common_hal_bleio_adapter_start_scan(bleio_adapter_obj_t *self, uint8_t*
ble_drv_add_event_handler(scan_on_ble_evt, self->scan_results);
uint32_t nrf_timeout = SEC_TO_UNITS(timeout, UNIT_10_MS);
if (timeout <= 0.0001) {
if (nrf_timeout > UINT16_MAX) {
// 0xffff / 100
mp_raise_ValueError(translate("timeout must be < 655.35 secs"));
}
if (nrf_timeout == 0 && timeout > 0.0f) {
// Make sure converted timeout is > 0 if original timeout is > 0.
mp_raise_ValueError(translate("non-zero timeout must be > 0.01"));
}
if (nrf_timeout) {
nrf_timeout = BLE_GAP_SCAN_TIMEOUT_UNLIMITED;
}

View File

@ -86,7 +86,7 @@ ifeq ($(DEBUG), 1)
CFLAGS += -fno-inline -fno-ipa-sra
else
CFLAGS += -DNDEBUG
OPTIMIZATION_FLAGS ?= -O2
OPTIMIZATION_FLAGS ?= -O2 -fno-inline-functions
CFLAGS += -ggdb3
# TODO: Test with -flto
# CFLAGS += -flto
@ -95,6 +95,9 @@ endif
# to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
CFLAGS += $(OPTIMIZATION_FLAGS)
# Add -ftree-vrp optimization and checking to all builds. It's not enabled for -Os by default.
CFLAGS += -ftree-vrp
# MCU Series is defined by the HAL package and doesn't need to be specified here
C_DEFS = -D$(MCU_PACKAGE) -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -D$(MCU_VARIANT)

View File

@ -20,3 +20,5 @@ LD_FILE = boards/STM32F401xd_fs.ld
# lto for this port, and if other stuff hasn't been added in the
# meantime
CIRCUITPY_ULAB = 0
SUPEROPT_GC = 0

View File

@ -26,7 +26,7 @@
//Micropython setup
#define MICROPY_HW_BOARD_NAME "Feather STM32F405 Express"
#define MICROPY_HW_BOARD_NAME "Adafruit Feather STM32F405 Express"
#define MICROPY_HW_MCU_NAME "STM32F405RG"
#define FLASH_SIZE (0x100000)

View File

@ -42,6 +42,9 @@
// #define SPI_FLASH_SCK_PIN (&pin_PA05)
// #define SPI_FLASH_CS_PIN (&pin_PA04)
#define DEFAULT_I2C_BUS_SCL (&pin_PB06)
#define DEFAULT_I2C_BUS_SDA (&pin_PB07)
#define CIRCUITPY_AUTORELOAD_DELAY_MS (500)
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x2000 - 0xC000)

View File

@ -35,5 +35,10 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_C14), MP_ROM_PTR(&pin_PC14) },
{ MP_ROM_QSTR(MP_QSTR_C13), MP_ROM_PTR(&pin_PC13) },
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PC13) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB07) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB06) },
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

View File

@ -205,6 +205,9 @@ endif
ifeq ($(CIRCUITPY_OS),1)
SRC_PATTERNS += os/%
endif
ifeq ($(CIRCUITPY_DUALBANK),1)
SRC_PATTERNS += dualbank/%
endif
ifeq ($(CIRCUITPY_PIXELBUF),1)
SRC_PATTERNS += _pixelbuf/%
endif
@ -304,6 +307,7 @@ SRC_COMMON_HAL_ALL = \
_bleio/__init__.c \
_pew/PewPew.c \
_pew/__init__.c \
alarm/SleepMemory.c \
alarm/__init__.c \
alarm/pin/PinAlarm.c \
alarm/time/TimeAlarm.c \
@ -347,6 +351,7 @@ SRC_COMMON_HAL_ALL = \
nvm/ByteArray.c \
nvm/__init__.c \
os/__init__.c \
dualbank/__init__.c \
ps2io/Ps2.c \
ps2io/__init__.c \
pulseio/PulseIn.c \

View File

@ -539,6 +539,13 @@ extern const struct _mp_obj_module_t os_module;
#define OS_MODULE_ALT_NAME
#endif
#if CIRCUITPY_DUALBANK
extern const struct _mp_obj_module_t dualbank_module;
#define DUALBANK_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_dualbank), (mp_obj_t)&dualbank_module },
#else
#define DUALBANK_MODULE
#endif
#if CIRCUITPY_PEW
extern const struct _mp_obj_module_t pew_module;
#define PEW_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR__pew),(mp_obj_t)&pew_module },
@ -827,6 +834,7 @@ extern const struct _mp_obj_module_t wifi_module;
NETWORK_MODULE \
SOCKET_MODULE \
WIZNET_MODULE \
DUALBANK_MODULE \
PEW_MODULE \
PIXELBUF_MODULE \
PS2IO_MODULE \

View File

@ -96,7 +96,7 @@ CFLAGS += -DCIRCUITPY_BLEIO=$(CIRCUITPY_BLEIO)
CIRCUITPY_BOARD ?= 1
CFLAGS += -DCIRCUITPY_BOARD=$(CIRCUITPY_BOARD)
CIRCUITPY_BUSDEVICE ?= $(CIRCUITPY_FULL_BUILD)
CIRCUITPY_BUSDEVICE = 0
CFLAGS += -DCIRCUITPY_BUSDEVICE=$(CIRCUITPY_BUSDEVICE)
CIRCUITPY_BUILTINS_POW3 ?= $(CIRCUITPY_FULL_BUILD)
@ -179,6 +179,9 @@ CFLAGS += -DCIRCUITPY_NVM=$(CIRCUITPY_NVM)
CIRCUITPY_OS ?= 1
CFLAGS += -DCIRCUITPY_OS=$(CIRCUITPY_OS)
CIRCUITPY_DUALBANK ?= 0
CFLAGS += -DCIRCUITPY_DUALBANK=$(CIRCUITPY_DUALBANK)
CIRCUITPY_PIXELBUF ?= $(CIRCUITPY_FULL_BUILD)
CFLAGS += -DCIRCUITPY_PIXELBUF=$(CIRCUITPY_PIXELBUF)

View File

@ -56,7 +56,7 @@ RM = rm
RSYNC = rsync
SED = sed
# Linux has 'nproc', macOS has 'sysctl -n hw.logicalcpu', this is cross-platform
NPROC = $(PYTHON) -c 'import multiprocessing as mp; print(mp.cpu_count())'
NPROC = $(PYTHON3) -c 'import multiprocessing as mp; print(mp.cpu_count())'
AS = $(CROSS_COMPILE)as
CC = $(CROSS_COMPILE)gcc
@ -72,7 +72,7 @@ CXX += -m32
LD += -m32
endif
MAKE_FROZEN = $(PYTHON) $(TOP)/tools/make-frozen.py
MAKE_FROZEN = $(PYTHON3) $(TOP)/tools/make-frozen.py
MPY_CROSS = $(TOP)/mpy-cross/mpy-cross
MPY_TOOL = $(PYTHON3) $(TOP)/tools/mpy-tool.py
PREPROCESS_FROZEN_MODULES = PYTHONPATH=$(TOP)/tools/python-semver $(TOP)/tools/preprocess_frozen_modules.py

View File

@ -125,7 +125,6 @@ void mp_obj_print_exception(const mp_print_t *print, mp_obj_t exc) {
mp_printf(print, decompressed_block, block);
}
}
mp_obj_exception_clear_traceback(exc);
}
}
mp_obj_print_helper(print, exc, PRINT_EXC);

View File

@ -19,7 +19,7 @@ endif
QSTR_GLOBAL_DEPENDENCIES += $(PY_SRC)/mpconfig.h mpconfigport.h
# some code is performance bottleneck and compiled with other optimization options
_CSUPEROPT = -O3
CSUPEROPT = -O3
# this sets the config file for FatFs
CFLAGS_MOD += -DFFCONF_H=\"lib/oofatfs/ffconf.h\"

View File

@ -33,8 +33,8 @@
#include "shared-bindings/_bleio/Address.h"
#include "shared-bindings/_bleio/Adapter.h"
#define ADV_INTERVAL_MIN (0.0020f)
#define ADV_INTERVAL_MIN_STRING "0.0020"
#define ADV_INTERVAL_MIN (0.02001f)
#define ADV_INTERVAL_MIN_STRING "0.02001"
#define ADV_INTERVAL_MAX (10.24f)
#define ADV_INTERVAL_MAX_STRING "10.24"
// 20ms is recommended by Apple
@ -307,7 +307,7 @@ STATIC mp_obj_t bleio_adapter_start_scan(size_t n_args, const mp_obj_t *pos_args
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_float_t timeout = 0;
mp_float_t timeout = 0.0f;
if (args[ARG_timeout].u_obj != mp_const_none) {
timeout = mp_obj_get_float(args[ARG_timeout].u_obj);
}
@ -325,6 +325,13 @@ STATIC mp_obj_t bleio_adapter_start_scan(size_t n_args, const mp_obj_t *pos_args
mp_raise_ValueError_varg(translate("interval must be in range %s-%s"), INTERVAL_MIN_STRING, INTERVAL_MAX_STRING);
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wfloat-equal"
if (timeout != 0.0f && timeout < interval) {
mp_raise_ValueError(translate("non-zero timeout must be >= interval"));
}
#pragma GCC diagnostic pop
const mp_float_t window = mp_obj_float_get(args[ARG_window].u_obj);
if (window > interval) {
mp_raise_ValueError(translate("window must be <= interval"));

View File

@ -110,8 +110,8 @@ STATIC mp_obj_t bleio_characteristic_add_to_service(size_t n_args, const mp_obj_
common_hal_bleio_attribute_security_mode_check_valid(write_perm);
const mp_int_t max_length_int = args[ARG_max_length].u_int;
if (max_length_int <= 0) {
mp_raise_ValueError(translate("max_length must be > 0"));
if (max_length_int < 0) {
mp_raise_ValueError(translate("max_length must be >= 0"));
}
const size_t max_length = (size_t) max_length_int;
const bool fixed_length = args[ARG_fixed_length].u_bool;

View File

@ -101,8 +101,8 @@ STATIC mp_obj_t bleio_descriptor_add_to_characteristic(size_t n_args, const mp_o
common_hal_bleio_attribute_security_mode_check_valid(write_perm);
const mp_int_t max_length_int = args[ARG_max_length].u_int;
if (max_length_int <= 0) {
mp_raise_ValueError(translate("max_length must be > 0"));
if (max_length_int < 0) {
mp_raise_ValueError(translate("max_length must be >= 0"));
}
const size_t max_length = (size_t) max_length_int;
const bool fixed_length = args[ARG_fixed_length].u_bool;

View File

@ -163,7 +163,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(adafruit_bus_device_i2cdevice_readinto_obj, 2,
//| """
//| ...
//|
STATIC void write(adafruit_bus_device_i2cdevice_obj_t *self, mp_obj_t buffer, int32_t start, mp_int_t end) {
STATIC void write(adafruit_bus_device_i2cdevice_obj_t *self, mp_obj_t buffer, int32_t start, mp_int_t end, bool transmit_stop_bit) {
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(buffer, &bufinfo, MP_BUFFER_READ);
@ -173,7 +173,7 @@ STATIC void write(adafruit_bus_device_i2cdevice_obj_t *self, mp_obj_t buffer, in
mp_raise_ValueError(translate("Buffer must be at least length 1"));
}
uint8_t status = common_hal_adafruit_bus_device_i2cdevice_write(MP_OBJ_TO_PTR(self), ((uint8_t*)bufinfo.buf) + start, length);
uint8_t status = common_hal_adafruit_bus_device_i2cdevice_write(MP_OBJ_TO_PTR(self), ((uint8_t*)bufinfo.buf) + start, length, transmit_stop_bit);
if (status != 0) {
mp_raise_OSError(status);
}
@ -191,7 +191,7 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_write(size_t n_args, const mp_obj_
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);
write(self, args[ARG_buffer].u_obj, args[ARG_start].u_int, args[ARG_end].u_int);
write(self, args[ARG_buffer].u_obj, args[ARG_start].u_int, args[ARG_end].u_int, true);
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_KW(adafruit_bus_device_i2cdevice_write_obj, 2, adafruit_bus_device_i2cdevice_write);
@ -233,7 +233,7 @@ STATIC mp_obj_t adafruit_bus_device_i2cdevice_write_then_readinto(size_t n_args,
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);
write(self, args[ARG_out_buffer].u_obj, args[ARG_out_start].u_int, args[ARG_out_end].u_int);
write(self, args[ARG_out_buffer].u_obj, args[ARG_out_start].u_int, args[ARG_out_end].u_int, false);
readinto(self, args[ARG_in_buffer].u_obj, args[ARG_in_start].u_int, args[ARG_in_end].u_int);

View File

@ -45,7 +45,7 @@ extern const mp_obj_type_t adafruit_bus_device_i2cdevice_type;
// Initializes the hardware peripheral.
extern void common_hal_adafruit_bus_device_i2cdevice_construct(adafruit_bus_device_i2cdevice_obj_t *self, busio_i2c_obj_t *i2c, uint8_t device_address);
extern uint8_t common_hal_adafruit_bus_device_i2cdevice_readinto(adafruit_bus_device_i2cdevice_obj_t *self, mp_obj_t buffer, size_t length);
extern uint8_t common_hal_adafruit_bus_device_i2cdevice_write(adafruit_bus_device_i2cdevice_obj_t *self, mp_obj_t buffer, size_t length);
extern uint8_t common_hal_adafruit_bus_device_i2cdevice_write(adafruit_bus_device_i2cdevice_obj_t *self, mp_obj_t buffer, size_t length, bool transmit_stop_bit);
extern void common_hal_adafruit_bus_device_i2cdevice_lock(adafruit_bus_device_i2cdevice_obj_t *self);
extern void common_hal_adafruit_bus_device_i2cdevice_unlock(adafruit_bus_device_i2cdevice_obj_t *self);
extern void common_hal_adafruit_bus_device_i2cdevice_probe_for_device(adafruit_bus_device_i2cdevice_obj_t *self);

View File

@ -0,0 +1,159 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
* Copyright (c) 2020 Dan Halbert for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "py/binary.h"
#include "py/objproperty.h"
#include "py/runtime.h"
#include "py/runtime0.h"
#include "shared-bindings/alarm/SleepMemory.h"
#include "supervisor/shared/translate.h"
//| class SleepMemory:
//| """Store raw bytes in RAM that persists during deep sleep.
//| The class acts as a ``bytearray``.
//| If power is lost, the memory contents are lost.
//|
//| Note that this class can't be imported and used directly. The sole
//| instance of :class:`SleepMemory` is available at
//| :attr:`alarm.sleep_memory`.
//|
//| Usage::
//|
//| import alarm
//| alarm.sleep_memory[0] = True
//| alarm.sleep_memory[1] = 12
//| """
//| def __init__(self) -> None:
//| """Not used. Access the sole instance through `alarm.sleep_memory`."""
//| ...
//|
STATIC const mp_rom_map_elem_t alarm_sleep_memory_locals_dict_table[] = {
};
STATIC MP_DEFINE_CONST_DICT(alarm_sleep_memory_locals_dict, alarm_sleep_memory_locals_dict_table);
//| @overload
//| def __getitem__(self, index: slice) -> bytearray: ...
//| @overload
//| def __getitem__(self, index: int) -> int:
//| """Returns the value at the given index."""
//| ...
//|
//| @overload
//| def __setitem__(self, index: slice, value: ReadableBuffer) -> None: ...
//| @overload
//| def __setitem__(self, index: int, value: int) -> None:
//| """Set the value at the given index."""
//| ...
//|
STATIC mp_obj_t alarm_sleep_memory_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) {
if (value == MP_OBJ_NULL) {
// delete item
// slice deletion
return MP_OBJ_NULL; // op not supported
} else {
alarm_sleep_memory_obj_t *self = MP_OBJ_TO_PTR(self_in);
if (0) {
#if MICROPY_PY_BUILTINS_SLICE
} else if (MP_OBJ_IS_TYPE(index_in, &mp_type_slice)) {
mp_bound_slice_t slice;
if (!mp_seq_get_fast_slice_indexes(common_hal_alarm_sleep_memory_get_length(self), index_in, &slice)) {
mp_raise_NotImplementedError(translate("only slices with step=1 (aka None) are supported"));
}
if (value != MP_OBJ_SENTINEL) {
#if MICROPY_PY_ARRAY_SLICE_ASSIGN
// Assign
size_t src_len = slice.stop - slice.start;
uint8_t* src_items;
if (MP_OBJ_IS_TYPE(value, &mp_type_array) ||
MP_OBJ_IS_TYPE(value, &mp_type_bytearray) ||
MP_OBJ_IS_TYPE(value, &mp_type_memoryview) ||
MP_OBJ_IS_TYPE(value, &mp_type_bytes)) {
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(value, &bufinfo, MP_BUFFER_READ);
if (bufinfo.len != src_len) {
mp_raise_ValueError(translate("Slice and value different lengths."));
}
src_len = bufinfo.len;
src_items = bufinfo.buf;
if (1 != mp_binary_get_size('@', bufinfo.typecode, NULL)) {
mp_raise_ValueError(translate("Array values should be single bytes."));
}
} else {
mp_raise_NotImplementedError(translate("array/bytes required on right side"));
}
if (!common_hal_alarm_sleep_memory_set_bytes(self, slice.start, src_items, src_len)) {
mp_raise_RuntimeError(translate("Unable to write to sleep_memory."));
}
return mp_const_none;
#else
return MP_OBJ_NULL; // op not supported
#endif
} else {
// Read slice.
size_t len = slice.stop - slice.start;
uint8_t *items = m_new(uint8_t, len);
common_hal_alarm_sleep_memory_get_bytes(self, slice.start, items, len);
return mp_obj_new_bytearray_by_ref(len, items);
}
#endif
} else {
// Single index rather than slice.
size_t index = mp_get_index(self->base.type, common_hal_alarm_sleep_memory_get_length(self),
index_in, false);
if (value == MP_OBJ_SENTINEL) {
// load
uint8_t value_out;
common_hal_alarm_sleep_memory_get_bytes(self, index, &value_out, 1);
return MP_OBJ_NEW_SMALL_INT(value_out);
} else {
// store
mp_int_t byte_value = mp_obj_get_int(value);
if (byte_value > 0xff || byte_value < 0) {
mp_raise_ValueError(translate("Bytes must be between 0 and 255."));
}
uint8_t short_value = byte_value;
if (!common_hal_alarm_sleep_memory_set_bytes(self, index, &short_value, 1)) {
mp_raise_RuntimeError(translate("Unable to write to sleep_memory."));
}
return mp_const_none;
}
}
}
}
const mp_obj_type_t alarm_sleep_memory_type = {
{ &mp_type_type },
.name = MP_QSTR_SleepMemory,
.subscr = alarm_sleep_memory_subscr,
.print = NULL,
.locals_dict = (mp_obj_t)&alarm_sleep_memory_locals_dict,
};

View File

@ -0,0 +1,40 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_SLEEPMEMORY_H
#define MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_SLEEPMEMORY_H
#include "common-hal/alarm/SleepMemory.h"
extern const mp_obj_type_t alarm_sleep_memory_type;
uint32_t common_hal_alarm_sleep_memory_get_length(alarm_sleep_memory_obj_t *self);
bool common_hal_alarm_sleep_memory_set_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, const uint8_t* values, uint32_t len);
void common_hal_alarm_sleep_memory_get_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, uint8_t* values, uint32_t len);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ALARM_SLEEPMEMORY_H

View File

@ -29,6 +29,7 @@
#include "py/runtime.h"
#include "shared-bindings/alarm/__init__.h"
#include "shared-bindings/alarm/SleepMemory.h"
#include "shared-bindings/alarm/pin/PinAlarm.h"
#include "shared-bindings/alarm/time/TimeAlarm.h"
#include "shared-bindings/supervisor/Runtime.h"
@ -57,7 +58,11 @@
//| maintaining the connection takes priority and power consumption may not be reduced.
//| """
//| sleep_memory: SleepMemory
//| """Memory that persists during deep sleep.
//| This object is the sole instance of `alarm.SleepMemory`."""
//|
//| wake_alarm: Alarm
//| """The most recently triggered alarm. If CircuitPython was sleeping, the alarm the woke it from sleep."""
//|
@ -177,6 +182,7 @@ STATIC const mp_obj_module_t alarm_time_module = {
.globals = (mp_obj_dict_t*)&alarm_time_globals,
};
// The module table is mutable because .wake_alarm is a mutable attribute.
STATIC mp_map_elem_t alarm_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_alarm) },
@ -188,12 +194,14 @@ STATIC mp_map_elem_t alarm_module_globals_table[] = {
MP_OBJ_FROM_PTR(&alarm_exit_and_deep_sleep_until_alarms_obj) },
{ MP_ROM_QSTR(MP_QSTR_pin), MP_OBJ_FROM_PTR(&alarm_pin_module) },
{ MP_ROM_QSTR(MP_QSTR_time), MP_OBJ_FROM_PTR(&alarm_time_module) }
{ MP_ROM_QSTR(MP_QSTR_time), MP_OBJ_FROM_PTR(&alarm_time_module) },
{ MP_ROM_QSTR(MP_QSTR_SleepMemory), MP_OBJ_FROM_PTR(&alarm_sleep_memory_type) },
{ MP_ROM_QSTR(MP_QSTR_sleep_memory), MP_OBJ_FROM_PTR(&alarm_sleep_memory_obj) },
};
STATIC MP_DEFINE_MUTABLE_DICT(alarm_module_globals, alarm_module_globals_table);
void common_hal_alarm_set_wake_alarm(mp_obj_t alarm) {
STATIC void alarm_set_wake_alarm(mp_obj_t alarm) {
// Equivalent of:
// alarm.wake_alarm = alarm
mp_map_elem_t *elem =
@ -203,6 +211,11 @@ void common_hal_alarm_set_wake_alarm(mp_obj_t alarm) {
}
}
// Initialize .wake_alarm value.
void alarm_save_wakeup_alarm(void) {
alarm_set_wake_alarm(common_hal_alarm_get_wake_alarm());
}
const mp_obj_module_t alarm_module = {
.base = { &mp_type_module },
.globals = (mp_obj_dict_t*)&alarm_module_globals,

View File

@ -43,8 +43,11 @@ extern void common_hal_alarm_set_deep_sleep_alarms(size_t n_alarms, const mp_obj
// Deep sleep is entered outside of the VM so we omit the `common_hal_` prefix.
extern NORETURN void alarm_enter_deep_sleep(void);
extern mp_obj_t common_hal_alarm_get_wake_alarm(void);
// Used by wake-up code.
extern void common_hal_alarm_set_wake_alarm(mp_obj_t alarm);
void alarm_save_wakeup_alarm(void);
// True if an alarm is alerting. This is most useful for pretend deep sleep.
extern bool alarm_woken_from_sleep(void);

View File

@ -38,7 +38,6 @@
//| RGB565: ImageFormat
//| """RGB565 format."""
//|
const mp_obj_type_t camera_imageformat_type;
const camera_imageformat_obj_t camera_imageformat_jpg_obj = {
{ &camera_imageformat_type },

View File

@ -35,7 +35,7 @@ typedef enum {
IMAGEFORMAT_RGB565,
} camera_imageformat_t;
const mp_obj_type_t camera_imageformat_type;
extern const mp_obj_type_t camera_imageformat_type;
camera_imageformat_t camera_imageformat_obj_to_type(mp_obj_t obj);
mp_obj_t camera_imageformat_type_to_obj(camera_imageformat_t mode);

View File

@ -0,0 +1,115 @@
/*
* This file is part of the Micro Python project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 microDev
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "shared-bindings/dualbank/__init__.h"
//| """DUALBANK Module
//|
//| The `dualbank` module adds ability to update and switch
//| between the two app partitions.
//|
//| There are two identical partitions, these contain different
//| firmware versions.
//| Having two partitions enables rollback functionality.
//|
//| The two partitions are defined as boot partition and
//| next-update partition. Calling `dualbank.flash()` writes
//| the next-update partition.
//|
//| After the next-update partition is written a validation
//| check is performed and on a successful validation this
//| partition is set as the boot partition. On next reset,
//| firmware will be loaded from this partition.
//|
//| Here is the sequence of commands to follow:
//|
//| .. code-block:: python
//|
//| import dualbank
//|
//| dualbank.flash(buffer, offset)
//| dualbank.switch()
//| """
//| ...
//|
//| def flash(*buffer: ReadableBuffer, offset: int=0) -> None:
//| """Writes one of two app partitions at the given offset.
//|
//| This can be called multiple times when flashing the firmware
//| in small chunks.
//| """
//| ...
//|
STATIC mp_obj_t dualbank_flash(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
enum { ARG_buffer, ARG_offset };
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_buffer, MP_ARG_OBJ | MP_ARG_REQUIRED },
{ MP_QSTR_offset, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 0} },
};
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);
if (args[ARG_offset].u_int < 0) {
mp_raise_ValueError(translate("offset must be >= 0"));
}
mp_buffer_info_t bufinfo;
mp_get_buffer_raise(args[ARG_buffer].u_obj, &bufinfo, MP_BUFFER_READ);
common_hal_dualbank_flash(bufinfo.buf, bufinfo.len, args[ARG_offset].u_int);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(dualbank_flash_obj, 0, dualbank_flash);
//| def switch() -> None:
//| """Switches the boot partition.
//|
//| On next reset, firmware will be loaded from the partition
//| just switched over to.
//| """
//| ...
//|
STATIC mp_obj_t dualbank_switch(void) {
common_hal_dualbank_switch();
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(dualbank_switch_obj, dualbank_switch);
STATIC const mp_rom_map_elem_t dualbank_module_globals_table[] = {
// module name
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_dualbank) },
// module functions
{ MP_ROM_QSTR(MP_QSTR_flash), MP_ROM_PTR(&dualbank_flash_obj) },
{ MP_ROM_QSTR(MP_QSTR_switch), MP_ROM_PTR(&dualbank_switch_obj) },
};
STATIC MP_DEFINE_CONST_DICT(dualbank_module_globals, dualbank_module_globals_table);
const mp_obj_module_t dualbank_module = {
.base = { &mp_type_module },
.globals = (mp_obj_dict_t*)&dualbank_module_globals,
};

View File

@ -0,0 +1,35 @@
/*
* This file is part of the MicroPython project, http://micropython.org/
*
* The MIT License (MIT)
*
* Copyright (c) 2020 microDev
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DUALBANK___INIT___H
#define MICROPY_INCLUDED_SHARED_BINDINGS_DUALBANK___INIT___H
#include "py/runtime.h"
extern void common_hal_dualbank_switch(void);
extern void common_hal_dualbank_flash(const void *buf, const size_t len, const size_t offset);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DUALBANK___INIT___H

View File

@ -57,8 +57,8 @@ uint8_t common_hal_adafruit_bus_device_i2cdevice_readinto(adafruit_bus_device_i2
return common_hal_busio_i2c_read(self->i2c, self->device_address, buffer, length);
}
uint8_t common_hal_adafruit_bus_device_i2cdevice_write(adafruit_bus_device_i2cdevice_obj_t *self, mp_obj_t buffer, size_t length) {
return common_hal_busio_i2c_write(self->i2c, self->device_address, buffer, length, true);
uint8_t common_hal_adafruit_bus_device_i2cdevice_write(adafruit_bus_device_i2cdevice_obj_t *self, mp_obj_t buffer, size_t length, bool transmit_stop_bit) {
return common_hal_busio_i2c_write(self->i2c, self->device_address, buffer, length, transmit_stop_bit);
}
void common_hal_adafruit_bus_device_i2cdevice_probe_for_device(adafruit_bus_device_i2cdevice_obj_t *self) {

View File

@ -29,6 +29,8 @@
#include "py/misc.h"
#include "py/runtime.h"
#define NO_TRANSPARENT_COLOR (0x1000000)
uint32_t displayio_colorconverter_dither_noise_1 (uint32_t n)
{
n = (n >> 13) ^ n;
@ -42,6 +44,7 @@ uint32_t displayio_colorconverter_dither_noise_2(uint32_t x, uint32_t y) {
void common_hal_displayio_colorconverter_construct(displayio_colorconverter_t* self, bool dither) {
self->dither = dither;
self->transparent_color = NO_TRANSPARENT_COLOR;
}
uint16_t displayio_colorconverter_compute_rgb565(uint32_t color_rgb888) {
@ -130,7 +133,7 @@ bool common_hal_displayio_colorconverter_get_dither(displayio_colorconverter_t*
}
void common_hal_displayio_colorconverter_make_transparent(displayio_colorconverter_t* self, uint32_t transparent_color) {
if (self->transparent_color >= 0x1000000) {
if (self->transparent_color != NO_TRANSPARENT_COLOR) {
mp_raise_RuntimeError(translate("Only one color can be transparent at a time"));
}
self->transparent_color = transparent_color;
@ -138,8 +141,8 @@ void common_hal_displayio_colorconverter_make_transparent(displayio_colorconvert
void common_hal_displayio_colorconverter_make_opaque(displayio_colorconverter_t* self, uint32_t transparent_color) {
(void) transparent_color;
// 0x1000000 will never equal a valid color
self->transparent_color = 0x1000000;
// NO_TRANSPARENT_COLOR will never equal a valid color
self->transparent_color = NO_TRANSPARENT_COLOR;
}
void displayio_colorconverter_convert(displayio_colorconverter_t *self, const _displayio_colorspace_t* colorspace, const displayio_input_pixel_t *input_pixel, displayio_output_pixel_t *output_color) {

View File

@ -57,7 +57,7 @@ void common_hal_displayio_ondiskbitmap_construct(displayio_ondiskbitmap_t *self,
uint32_t compression = read_word(bmp_header, 15);
uint32_t number_of_colors = read_word(bmp_header, 23);
bool indexed = ((bits_per_pixel <= 8) && (number_of_colors != 0));
bool indexed = bits_per_pixel <= 8;
self->bitfield_compressed = (compression == 3);
self->bits_per_pixel = bits_per_pixel;
self->width = read_word(bmp_header, 9);
@ -75,6 +75,9 @@ void common_hal_displayio_ondiskbitmap_construct(displayio_ondiskbitmap_t *self,
self->b_bitmask = 0x1f;
}
} else if (indexed && self->bits_per_pixel != 1) {
if (number_of_colors == 0) {
number_of_colors = 1 << bits_per_pixel;
}
uint16_t palette_size = number_of_colors * sizeof(uint32_t);
uint16_t palette_offset = 0xe + header_size;

Some files were not shown because too many files have changed in this diff Show More