Fix esp and samd

crypto-aes
Scott Shawcroft 5 years ago
parent 137a30ad75
commit 2cd166b573
No known key found for this signature in database
GPG Key ID: FD0EDC4B6C53CA59

@ -33,6 +33,8 @@
#include "py/runtime.h"
#include "extmod/machine_i2c.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_MACHINE_I2C
typedef mp_machine_soft_i2c_obj_t machine_i2c_obj_t;
@ -294,7 +296,7 @@ STATIC mp_obj_t machine_i2c_make_new(const mp_obj_type_t *type, size_t n_args, s
extern mp_obj_t MICROPY_PY_MACHINE_I2C_MAKE_NEW(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args);
return MICROPY_PY_MACHINE_I2C_MAKE_NEW(type, n_args, n_kw, args);
#else
mp_raise_ValueError("invalid I2C peripheral");
mp_raise_ValueError(translate("invalid I2C peripheral"));
#endif
}
--n_args;
@ -335,7 +337,7 @@ STATIC mp_obj_t machine_i2c_start(mp_obj_t self_in) {
mp_obj_base_t *self = (mp_obj_base_t*)MP_OBJ_TO_PTR(self_in);
mp_machine_i2c_p_t *i2c_p = (mp_machine_i2c_p_t*)self->type->protocol;
if (i2c_p->start == NULL) {
mp_raise_msg(&mp_type_OSError, "I2C operation not supported");
mp_raise_msg(&mp_type_OSError, translate("I2C operation not supported"));
}
int ret = i2c_p->start(self);
if (ret != 0) {
@ -349,7 +351,7 @@ STATIC mp_obj_t machine_i2c_stop(mp_obj_t self_in) {
mp_obj_base_t *self = (mp_obj_base_t*)MP_OBJ_TO_PTR(self_in);
mp_machine_i2c_p_t *i2c_p = (mp_machine_i2c_p_t*)self->type->protocol;
if (i2c_p->stop == NULL) {
mp_raise_msg(&mp_type_OSError, "I2C operation not supported");
mp_raise_msg(&mp_type_OSError, translate("I2C operation not supported"));
}
int ret = i2c_p->stop(self);
if (ret != 0) {
@ -363,7 +365,7 @@ STATIC mp_obj_t machine_i2c_readinto(size_t n_args, const mp_obj_t *args) {
mp_obj_base_t *self = (mp_obj_base_t*)MP_OBJ_TO_PTR(args[0]);
mp_machine_i2c_p_t *i2c_p = (mp_machine_i2c_p_t*)self->type->protocol;
if (i2c_p->read == NULL) {
mp_raise_msg(&mp_type_OSError, "I2C operation not supported");
mp_raise_msg(&mp_type_OSError, translate("I2C operation not supported"));
}
// get the buffer to read into
@ -387,7 +389,7 @@ STATIC mp_obj_t machine_i2c_write(mp_obj_t self_in, mp_obj_t buf_in) {
mp_obj_base_t *self = (mp_obj_base_t*)MP_OBJ_TO_PTR(self_in);
mp_machine_i2c_p_t *i2c_p = (mp_machine_i2c_p_t*)self->type->protocol;
if (i2c_p->write == NULL) {
mp_raise_msg(&mp_type_OSError, "I2C operation not supported");
mp_raise_msg(&mp_type_OSError, translate("I2C operation not supported"));
}
// get the buffer to write from

@ -30,6 +30,8 @@
#include "py/runtime.h"
#include "extmod/machine_spi.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_MACHINE_SPI
// if a port didn't define MSB/LSB constants then provide them
@ -52,7 +54,7 @@ mp_obj_t mp_machine_spi_make_new(const mp_obj_type_t *type, size_t n_args, size_
extern mp_obj_t MICROPY_PY_MACHINE_SPI_MAKE_NEW(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args);
return MICROPY_PY_MACHINE_SPI_MAKE_NEW(type, n_args, n_kw, args);
#else
mp_raise_ValueError("invalid SPI peripheral");
mp_raise_ValueError(translate("invalid SPI peripheral"));
#endif
}
--n_args;
@ -119,7 +121,7 @@ STATIC mp_obj_t mp_machine_spi_write_readinto(mp_obj_t self, mp_obj_t wr_buf, mp
mp_buffer_info_t dest;
mp_get_buffer_raise(rd_buf, &dest, MP_BUFFER_WRITE);
if (src.len != dest.len) {
mp_raise_ValueError("buffers must be the same length");
mp_raise_ValueError(translate("buffers must be the same length"));
}
mp_machine_spi_transfer(self, src.len, src.buf, dest.buf);
return mp_const_none;
@ -202,15 +204,15 @@ STATIC mp_obj_t mp_machine_soft_spi_make_new(const mp_obj_type_t *type, size_t n
self->spi.polarity = args[ARG_polarity].u_int;
self->spi.phase = args[ARG_phase].u_int;
if (args[ARG_bits].u_int != 8) {
mp_raise_ValueError("bits must be 8");
mp_raise_ValueError(translate("bits must be 8"));
}
if (args[ARG_firstbit].u_int != MICROPY_PY_MACHINE_SPI_MSB) {
mp_raise_ValueError("firstbit must be MSB");
mp_raise_ValueError(translate("firstbit must be MSB"));
}
if (args[ARG_sck].u_obj == MP_OBJ_NULL
|| args[ARG_mosi].u_obj == MP_OBJ_NULL
|| args[ARG_miso].u_obj == MP_OBJ_NULL) {
mp_raise_ValueError("must specify all of sck/mosi/miso");
mp_raise_ValueError(translate("must specify all of sck/mosi/miso"));
}
self->spi.sck = mp_hal_get_pin_obj(args[ARG_sck].u_obj);
self->spi.mosi = mp_hal_get_pin_obj(args[ARG_mosi].u_obj);

@ -32,6 +32,8 @@
#include "py/objtuple.h"
#include "py/binary.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_UCTYPES
/// \module uctypes - Access data structures in memory
@ -117,7 +119,7 @@ typedef struct _mp_obj_uctypes_struct_t {
} mp_obj_uctypes_struct_t;
STATIC NORETURN void syntax_error(void) {
mp_raise_TypeError("syntax error in uctypes descriptor");
mp_raise_TypeError(translate("syntax error in uctypes descriptor"));
}
STATIC mp_obj_t uctypes_struct_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
@ -214,7 +216,7 @@ STATIC mp_uint_t uctypes_struct_size(mp_obj_t desc_in, int layout_type, mp_uint_
// but scalar structure field is lowered into native Python int, so all
// type info is lost. So, we cannot say if it's scalar type description,
// or such lowered scalar.
mp_raise_TypeError("Cannot unambiguously get sizeof scalar");
mp_raise_TypeError(translate("Cannot unambiguously get sizeof scalar"));
}
syntax_error();
}
@ -392,7 +394,7 @@ STATIC mp_obj_t uctypes_struct_attr_op(mp_obj_t self_in, qstr attr, mp_obj_t set
// TODO: Support at least OrderedDict in addition
if (!MP_OBJ_IS_TYPE(self->desc, &mp_type_dict)) {
mp_raise_TypeError("struct: no fields");
mp_raise_TypeError(translate("struct: no fields"));
}
mp_obj_t deref = mp_obj_dict_get(self->desc, MP_OBJ_NEW_QSTR(attr));
@ -525,7 +527,7 @@ STATIC mp_obj_t uctypes_struct_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_ob
} else {
// load / store
if (!MP_OBJ_IS_TYPE(self->desc, &mp_type_tuple)) {
mp_raise_TypeError("struct: cannot index");
mp_raise_TypeError(translate("struct: cannot index"));
}
mp_obj_tuple_t *t = MP_OBJ_TO_PTR(self->desc);
@ -539,7 +541,7 @@ STATIC mp_obj_t uctypes_struct_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_ob
uint val_type = GET_TYPE(arr_sz, VAL_TYPE_BITS);
arr_sz &= VALUE_MASK(VAL_TYPE_BITS);
if (index >= arr_sz) {
nlr_raise(mp_obj_new_exception_msg(&mp_type_IndexError, "struct: index out of range"));
nlr_raise(mp_obj_new_exception_msg(&mp_type_IndexError, translate("struct: index out of range")));
}
if (t->len == 2) {

@ -29,6 +29,8 @@
#include "py/runtime.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_UHASHLIB
#if MICROPY_PY_UHASHLIB_SHA256
@ -97,7 +99,7 @@ STATIC mp_obj_t uhashlib_sha256_digest(mp_obj_t self_in) {
static void check_not_unicode(const mp_obj_t arg) {
#if MICROPY_CPYTHON_COMPAT
if (MP_OBJ_IS_STR(arg)) {
mp_raise_TypeError("a bytes-like object is required");
mp_raise_TypeError(translate("a bytes-like object is required"));
}
#endif
}

@ -27,13 +27,15 @@
#include "py/objlist.h"
#include "py/runtime.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_UHEAPQ
// the algorithm here is modelled on CPython's heapq.py
STATIC mp_obj_list_t *get_heap(mp_obj_t heap_in) {
if (!MP_OBJ_IS_TYPE(heap_in, &mp_type_list)) {
mp_raise_TypeError("heap must be a list");
mp_raise_TypeError(translate("heap must be a list"));
}
return MP_OBJ_TO_PTR(heap_in);
}
@ -81,7 +83,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_uheapq_heappush_obj, mod_uheapq_heappush);
STATIC mp_obj_t mod_uheapq_heappop(mp_obj_t heap_in) {
mp_obj_list_t *heap = get_heap(heap_in);
if (heap->len == 0) {
nlr_raise(mp_obj_new_exception_msg(&mp_type_IndexError, "empty heap"));
nlr_raise(mp_obj_new_exception_msg(&mp_type_IndexError, translate("empty heap")));
}
mp_obj_t item = heap->items[0];
heap->len -= 1;

@ -32,6 +32,8 @@
#include "py/runtime.h"
#include "py/stream.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_UJSON
STATIC mp_obj_t mod_ujson_dump(mp_obj_t obj, mp_obj_t stream) {
@ -276,7 +278,7 @@ STATIC mp_obj_t mod_ujson_load(mp_obj_t stream_obj) {
return stack_top;
fail:
mp_raise_ValueError("syntax error in JSON");
mp_raise_ValueError(translate("syntax error in JSON"));
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_ujson_load_obj, mod_ujson_load);

@ -30,6 +30,8 @@
#include "py/runtime.h"
#include "py/stream.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_USSL && MICROPY_SSL_AXTLS
#include "ssl.h"
@ -76,13 +78,13 @@ STATIC mp_obj_ssl_socket_t *socket_new(mp_obj_t sock, struct ssl_args *args) {
const byte *data = (const byte*)mp_obj_str_get_data(args->key.u_obj, &len);
int res = ssl_obj_memory_load(o->ssl_ctx, SSL_OBJ_RSA_KEY, data, len, NULL);
if (res != SSL_OK) {
mp_raise_ValueError("invalid key");
mp_raise_ValueError(translate("invalid key"));
}
data = (const byte*)mp_obj_str_get_data(args->cert.u_obj, &len);
res = ssl_obj_memory_load(o->ssl_ctx, SSL_OBJ_X509_CERT, data, len, NULL);
if (res != SSL_OK) {
mp_raise_ValueError("invalid cert");
mp_raise_ValueError(translate("invalid cert"));
}
}

@ -31,6 +31,8 @@
#include "py/runtime.h"
#include "py/smallint.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_UTIMEQ
#define MODULO MICROPY_PY_UTIME_TICKS_PERIOD
@ -126,7 +128,7 @@ STATIC mp_obj_t mod_utimeq_heappush(size_t n_args, const mp_obj_t *args) {
mp_obj_t heap_in = args[0];
mp_obj_utimeq_t *heap = get_heap(heap_in);
if (heap->len == heap->alloc) {
mp_raise_IndexError("queue overflow");
mp_raise_IndexError(translate("queue overflow"));
}
mp_uint_t l = heap->len;
heap->items[l].time = MP_OBJ_SMALL_INT_VALUE(args[1]);
@ -142,7 +144,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_utimeq_heappush_obj, 4, 4, mod_ut
STATIC mp_obj_t mod_utimeq_heappop(mp_obj_t heap_in, mp_obj_t list_ref) {
mp_obj_utimeq_t *heap = get_heap(heap_in);
if (heap->len == 0) {
nlr_raise(mp_obj_new_exception_msg(&mp_type_IndexError, "empty heap"));
mp_raise_IndexError(translate("empty heap"));
}
mp_obj_list_t *ret = MP_OBJ_TO_PTR(list_ref);
if (!MP_OBJ_IS_TYPE(list_ref, &mp_type_list) || ret->len < 3) {
@ -167,7 +169,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_utimeq_heappop_obj, mod_utimeq_heappop);
STATIC mp_obj_t mod_utimeq_peektime(mp_obj_t heap_in) {
mp_obj_utimeq_t *heap = get_heap(heap_in);
if (heap->len == 0) {
nlr_raise(mp_obj_new_exception_msg(&mp_type_IndexError, "empty heap"));
mp_raise_IndexError(translate("empty heap"));
}
struct qentry *item = &heap->items[0];

@ -31,6 +31,8 @@
#include "py/stream.h"
#include "py/mperrno.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_UZLIB
#include "../../lib/uzlib/src/tinf.h"
@ -92,7 +94,7 @@ STATIC mp_obj_t decompio_make_new(const mp_obj_type_t *type, size_t n_args, size
dict_opt = uzlib_zlib_parse_header(&o->decomp);
if (dict_opt < 0) {
header_error:
mp_raise_ValueError("compression header");
mp_raise_ValueError(translate("compression header"));
}
dict_sz = 1 << dict_opt;
} else {

@ -34,6 +34,8 @@
#include "py/stream.h"
#include "lib/utils/interrupt_char.h"
#include "supervisor/shared/translate.h"
#if MICROPY_PY_OS_DUPTERM
void mp_uos_deactivate(size_t dupterm_idx, const char *msg, mp_obj_t exc) {
@ -115,7 +117,7 @@ STATIC mp_obj_t mp_uos_dupterm(size_t n_args, const mp_obj_t *args) {
}
if (idx < 0 || idx >= MICROPY_PY_OS_DUPTERM) {
mp_raise_ValueError("invalid dupterm index");
mp_raise_ValueError(translate("invalid dupterm index"));
}
mp_obj_t previous_obj = MP_STATE_VM(dupterm_objs[idx]);

@ -31,6 +31,7 @@
#include "py/runtime.h"
#include "lib/netutils/netutils.h"
#include "supervisor/shared/translate.h"
// Takes an array with a raw IPv4 address and returns something like '192.168.0.1'.
mp_obj_t netutils_format_ipv4_addr(uint8_t *ip, netutils_endian_t endian) {
@ -79,7 +80,7 @@ void netutils_parse_ipv4_addr(mp_obj_t addr_in, uint8_t *out_ip, netutils_endian
} else if (i > 0 && s < s_top && *s == '.') {
s++;
} else {
mp_raise_ValueError("invalid arguments");
mp_raise_ValueError(translate("invalid arguments"));
}
}
}

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-09 14:14-0700\n"
"POT-Creation-Date: 2018-08-16 13:33-0700\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"
@ -17,7 +17,121 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: extmod/vfs_fat.c:426 py/moduerrno.c:115
#: extmod/machine_i2c.c:299
msgid "invalid I2C peripheral"
msgstr ""
#: extmod/machine_i2c.c:340 extmod/machine_i2c.c:354 extmod/machine_i2c.c:368
#: extmod/machine_i2c.c:392
msgid "I2C operation not supported"
msgstr ""
#: extmod/machine_mem.c:45
#, c-format
msgid "address %08x is not aligned to %d bytes"
msgstr ""
#: extmod/machine_spi.c:57
msgid "invalid SPI peripheral"
msgstr ""
#: extmod/machine_spi.c:124
msgid "buffers must be the same length"
msgstr ""
#: extmod/machine_spi.c:207
msgid "bits must be 8"
msgstr ""
#: extmod/machine_spi.c:210
msgid "firstbit must be MSB"
msgstr ""
#: extmod/machine_spi.c:215
msgid "must specify all of sck/mosi/miso"
msgstr ""
#: extmod/modframebuf.c:299
msgid "invalid format"
msgstr ""
#: extmod/modubinascii.c:38 extmod/moduhashlib.c:102
msgid "a bytes-like object is required"
msgstr ""
#: extmod/modubinascii.c:90
msgid "odd-length string"
msgstr ""
#: extmod/modubinascii.c:101
msgid "non-hex digit found"
msgstr ""
#: extmod/modubinascii.c:169
msgid "incorrect padding"
msgstr ""
#: extmod/moductypes.c:122
msgid "syntax error in uctypes descriptor"
msgstr ""
#: extmod/moductypes.c:219
msgid "Cannot unambiguously get sizeof scalar"
msgstr ""
#: extmod/moductypes.c:397
msgid "struct: no fields"
msgstr ""
#: extmod/moductypes.c:530
msgid "struct: cannot index"
msgstr ""
#: extmod/moductypes.c:544
msgid "struct: index out of range"
msgstr ""
#: extmod/moduheapq.c:38
msgid "heap must be a list"
msgstr ""
#: extmod/moduheapq.c:86 extmod/modutimeq.c:147 extmod/modutimeq.c:172
msgid "empty heap"
msgstr ""
#: extmod/modujson.c:281
msgid "syntax error in JSON"
msgstr ""
#: extmod/modure.c:161
msgid "Splitting with sub-captures"
msgstr ""
#: extmod/modure.c:207
msgid "Error in regex"
msgstr ""
#: extmod/modussl_axtls.c:81
msgid "invalid key"
msgstr ""
#: extmod/modussl_axtls.c:87
msgid "invalid cert"
msgstr ""
#: extmod/modutimeq.c:131
msgid "queue overflow"
msgstr ""
#: extmod/moduzlib.c:97
msgid "compression header"
msgstr ""
#: extmod/uos_dupterm.c:120
msgid "invalid dupterm index"
msgstr ""
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
msgid "Read-only filesystem"
msgstr ""
@ -25,82 +139,115 @@ msgstr ""
msgid "abort() called"
msgstr ""
#: lib/netutils/netutils.c:83
msgid "invalid arguments"
msgstr ""
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
msgid "script compilation not supported"
msgstr ""
#: main.c:137
#: main.c:143
msgid " output:\n"
msgstr ""
#: main.c:148 main.c:221
#: main.c:157 main.c:230
msgid ""
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
"disable.\n"
msgstr ""
#: main.c:150
#: main.c:159
msgid "Running in safe mode! Auto-reload is off.\n"
msgstr ""
#: main.c:152 main.c:223
#: main.c:161 main.c:232
msgid "Auto-reload is off.\n"
msgstr ""
#: main.c:166
#: main.c:175
msgid "Running in safe mode! Not running saved code.\n"
msgstr ""
#: main.c:182
#: main.c:191
msgid "WARNING: Your code filename has two extensions\n"
msgstr ""
#: main.c:230
#: main.c:239
msgid "You requested starting safe mode by "
msgstr ""
#: main.c:233
#: main.c:242
msgid "To exit, please reset the board without "
msgstr ""
#: main.c:240
#: main.c:249
msgid ""
"You are running in safe mode which means something really bad happened.\n"
msgstr ""
#: main.c:242
#: main.c:251
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
msgstr ""
#: main.c:243
#: main.c:252
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
msgstr ""
#: main.c:246
#: main.c:255
msgid ""
"The microcontroller's power dipped. Please make sure your power supply "
"provides\n"
msgstr ""
#: main.c:247
#: main.c:256
msgid ""
"enough power for the whole circuit and press reset (after ejecting "
"CIRCUITPY).\n"
msgstr ""
#: main.c:251
#: main.c:260
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgstr ""
#: main.c:406
#: main.c:415
msgid "soft reboot\n"
msgstr ""
#: ports/atmel-samd/audio_dma.c:285
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:361
msgid "All sync event channels in use"
msgstr ""
#: ports/atmel-samd/bindings/samd/Clock.c:135
msgid "calibration is read only"
msgstr ""
#: ports/atmel-samd/bindings/samd/Clock.c:137
msgid "calibration is out of range"
msgstr ""
#: ports/atmel-samd/board_busses.c:39
msgid "No default I2C bus"
msgstr ""
#: ports/atmel-samd/board_busses.c:64
msgid "No default SPI bus"
msgstr ""
#: ports/atmel-samd/board_busses.c:91
msgid "No default UART bus"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c:63
msgid "Pin does not have ADC capabilities"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c:53
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c:49
msgid "No DAC on chip"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c:56
msgid "AnalogOut not supported on given pin"
msgstr ""
@ -139,12 +286,12 @@ msgid "Too many channels in sample."
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:322
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:326
msgid "No DMA channel found"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:324
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:328
msgid "Unable to allocate buffers for signed conversion"
msgstr ""
@ -192,11 +339,16 @@ msgstr ""
msgid "All timers in use"
msgstr ""
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:215
msgid "All event channels in use"
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c:45
msgid "Not enough pins available"
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c:76
#: ports/atmel-samd/common-hal/busio/SPI.c:132
#: ports/atmel-samd/common-hal/busio/UART.c:119
msgid "Invalid pins"
msgstr ""
@ -238,6 +390,7 @@ msgid "Cannot get pull while in output mode"
msgstr ""
#: ports/atmel-samd/common-hal/microcontroller/__init__.c:74
#: ports/esp8266/common-hal/microcontroller/__init__.c:64
msgid "Cannot reset into bootloader because no bootloader is present."
msgstr ""
@ -259,15 +412,18 @@ msgid "EXTINT channel already in use"
msgstr ""
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:118
#: ports/esp8266/common-hal/pulseio/PulseIn.c:86
#, c-format
msgid "Failed to allocate RX buffer of %d bytes"
msgstr ""
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:203
#: ports/esp8266/common-hal/pulseio/PulseIn.c:151
msgid "pop from an empty PulseIn"
msgstr ""
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:235 py/obj.c:404
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:235
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
msgid "index out of range"
msgstr ""
@ -308,6 +464,293 @@ msgstr ""
msgid "USB Error"
msgstr ""
#: ports/esp8266/common-hal/analogio/AnalogIn.c:43
msgid "Pin %q does not have ADC capabilities"
msgstr ""
#: ports/esp8266/common-hal/analogio/AnalogOut.c:39
msgid "No hardware support for analog out."
msgstr ""
#: ports/esp8266/common-hal/busio/SPI.c:72
msgid "Pins not valid for SPI"
msgstr ""
#: ports/esp8266/common-hal/busio/UART.c:45
msgid "Only tx supported on UART1 (GPIO2)."
msgstr ""
#: ports/esp8266/common-hal/busio/UART.c:67 ports/esp8266/machine_uart.c:108
msgid "invalid data bits"
msgstr ""
#: ports/esp8266/common-hal/busio/UART.c:91 ports/esp8266/machine_uart.c:144
msgid "invalid stop bits"
msgstr ""
#: ports/esp8266/common-hal/digitalio/DigitalInOut.c:200
msgid "ESP8266 does not support pull down."
msgstr ""
#: ports/esp8266/common-hal/digitalio/DigitalInOut.c:210
msgid "GPIO16 does not support pull up."
msgstr ""
#: ports/esp8266/common-hal/microcontroller/__init__.c:66
msgid "ESP8226 does not support safe mode."
msgstr ""
#: ports/esp8266/common-hal/pulseio/PWMOut.c:54
#: ports/esp8266/common-hal/pulseio/PWMOut.c:113
#, c-format
msgid "Maximum PWM frequency is %dhz."
msgstr ""
#: ports/esp8266/common-hal/pulseio/PWMOut.c:57
#: ports/esp8266/common-hal/pulseio/PWMOut.c:116
msgid "Minimum PWM frequency is 1hz."
msgstr ""
#: ports/esp8266/common-hal/pulseio/PWMOut.c:68
#, c-format
msgid "Multiple PWM frequencies not supported. PWM already set to %dhz."
msgstr ""
#: ports/esp8266/common-hal/pulseio/PWMOut.c:77 ports/esp8266/machine_pwm.c:70
#, c-format
msgid "PWM not supported on pin %d"
msgstr ""
#: ports/esp8266/common-hal/pulseio/PulseIn.c:78
msgid "No PulseIn support for %q"
msgstr ""
#: ports/esp8266/common-hal/storage/__init__.c:34
msgid "Unable to remount filesystem"
msgstr ""
#: ports/esp8266/common-hal/storage/__init__.c:38
msgid "Use esptool to erase flash and re-upload Python instead"
msgstr ""
#: ports/esp8266/esp_mphal.c:154
msgid "C-level assert"
msgstr ""
#: ports/esp8266/machine_adc.c:57
#, c-format
msgid "not a valid ADC Channel: %d"
msgstr ""
#: ports/esp8266/machine_hspi.c:131 ports/esp8266/machine_hspi.c:137
msgid "impossible baudrate"
msgstr ""
#: ports/esp8266/machine_pin.c:129
msgid "expecting a pin"
msgstr ""
#: ports/esp8266/machine_pin.c:284
msgid "Pin(16) doesn't support pull"
msgstr ""
#: ports/esp8266/machine_pin.c:323
msgid "invalid pin"
msgstr ""
#: ports/esp8266/machine_pin.c:389
msgid "pin does not have IRQ capabilities"
msgstr ""
#: ports/esp8266/machine_rtc.c:185
msgid "buffer too long"
msgstr ""
#: ports/esp8266/machine_rtc.c:209 ports/esp8266/machine_rtc.c:223
#: ports/esp8266/machine_rtc.c:246
msgid "invalid alarm"
msgstr ""
#: ports/esp8266/machine_uart.c:169
#, c-format
msgid "UART(%d) does not exist"
msgstr ""
#: ports/esp8266/machine_uart.c:219
msgid "UART(1) can't read"
msgstr ""
#: ports/esp8266/modesp.c:119
msgid "len must be multiple of 4"
msgstr ""
#: ports/esp8266/modesp.c:274
#, c-format
msgid "memory allocation failed, allocating %u bytes for native code"
msgstr ""
#: ports/esp8266/modesp.c:317
msgid "flash location must be below 1MByte"
msgstr ""
#: ports/esp8266/modmachine.c:63
msgid "frequency can only be either 80Mhz or 160MHz"
msgstr ""
#: ports/esp8266/modnetwork.c:61
msgid "STA required"
msgstr ""
#: ports/esp8266/modnetwork.c:61
msgid "AP required"
msgstr ""
#: ports/esp8266/modnetwork.c:87
msgid "Cannot update i/f status"
msgstr ""
#: ports/esp8266/modnetwork.c:142
msgid "Cannot set STA config"
msgstr ""
#: ports/esp8266/modnetwork.c:144
msgid "Cannot connect to AP"
msgstr ""
#: ports/esp8266/modnetwork.c:152
msgid "Cannot disconnect from AP"
msgstr ""
#: ports/esp8266/modnetwork.c:173
msgid "unknown status param"
msgstr ""
#: ports/esp8266/modnetwork.c:222
msgid "STA must be active"
msgstr ""
#: ports/esp8266/modnetwork.c:239
msgid "scan failed"
msgstr ""
#: ports/esp8266/modnetwork.c:306
msgid "wifi_set_ip_info() failed"
msgstr ""
#: ports/esp8266/modnetwork.c:319
msgid "either pos or kw args are allowed"
msgstr ""
#: ports/esp8266/modnetwork.c:329
msgid "can't get STA config"
msgstr ""
#: ports/esp8266/modnetwork.c:331
msgid "can't get AP config"
msgstr ""
#: ports/esp8266/modnetwork.c:346
msgid "invalid buffer length"
msgstr ""
#: ports/esp8266/modnetwork.c:405
msgid "can't set STA config"
msgstr ""
#: ports/esp8266/modnetwork.c:407
msgid "can't set AP config"
msgstr ""
#: ports/esp8266/modnetwork.c:416
msgid "can query only one param"
msgstr ""
#: ports/esp8266/modnetwork.c:469
msgid "unknown config param"
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:199
msgid "Cannot apply GAP parameters."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:213
msgid "Cannot set PPCP parameters."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:264
msgid "Can not add Vendor Specific 128-bit UUID."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:284
#: ports/nrf/drivers/bluetooth/ble_drv.c:298
msgid "Can not add Service."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:373
msgid "Can not add Characteristic."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:400
msgid "Can not apply device name in the stack."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:464
#: ports/nrf/drivers/bluetooth/ble_drv.c:514
msgid "Can not encode UUID, to check length."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:470
#: ports/nrf/drivers/bluetooth/ble_drv.c:520
msgid "Can encode UUID into the advertisment packet."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:545
msgid "Can not fit data into the advertisment packet."
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:558
#: ports/nrf/drivers/bluetooth/ble_drv.c:604
#, c-format
msgid "Can not apply advertisment data. status: 0x%02x"
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:614
#, c-format
msgid "Can not start advertisment. status: 0x%02x"
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:631
#, c-format
msgid "Can not stop advertisment. status: 0x%02x"
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:650
#: ports/nrf/drivers/bluetooth/ble_drv.c:726
#, c-format
msgid "Can not read attribute value. status: 0x%02x"
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:667
#: ports/nrf/drivers/bluetooth/ble_drv.c:756
#, c-format
msgid "Can not write attribute value. status: 0x%02x"
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:691
#, c-format
msgid "Can not notify attribute value. status: 0x%02x"
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:784
#, c-format
msgid "Can not start scanning. status: 0x%02x"
msgstr ""
#: ports/nrf/drivers/bluetooth/ble_drv.c:829
#, c-format
msgid "Can not connect. status: 0x%02x"
msgstr ""
#: py/argcheck.c:44
msgid "function does not take keyword arguments"
msgstr ""
@ -549,14 +992,111 @@ msgstr ""
msgid "'data' requires integer arguments"
msgstr ""
#: py/emitinlinextensa.c:86
msgid "can only have up to 4 parameters to Xtensa assembly"
msgstr ""
#: py/emitinlinextensa.c:91 py/emitinlinextensa.c:96
msgid "parameters must be registers in sequence a2 to a5"
msgstr ""
#: py/emitinlinextensa.c:162
#, c-format
msgid "'%s' expects a register"
msgstr ""
#: py/emitinlinextensa.c:169
#, c-format
msgid "'%s' expects an integer"
msgstr ""
#: py/emitinlinextensa.c:174
#, c-format
msgid "'%s' integer %d is not within range %d..%d"
msgstr ""
#: py/emitinlinextensa.c:182
#, c-format
msgid "'%s' expects a label"
msgstr ""
#: py/emitinlinextensa.c:193
msgid "label '%q' not defined"
msgstr ""
#: py/emitinlinextensa.c:327
#, c-format
msgid "unsupported Xtensa instruction '%s' with %d arguments"
msgstr ""
#: py/emitnative.c:183
msgid "unknown type '%q'"
msgstr ""
#: py/emitnative.c:260
msgid "Viper functions don't currently support more than 4 arguments"
msgstr ""
#: py/emitnative.c:742
msgid "conversion to object"
msgstr ""
#: py/emitnative.c:921
msgid "local '%q' used before type known"
msgstr ""
#: py/emitnative.c:1118 py/emitnative.c:1156
msgid "can't load from '%q'"
msgstr ""
#: py/emitnative.c:1128
msgid "can't load with '%q' index"
msgstr ""
#: py/emitnative.c:1188
msgid "local '%q' has type '%q' but source is '%q'"
msgstr ""
#: py/emitnative.c:1289 py/emitnative.c:1379
msgid "can't store '%q'"
msgstr ""
#: py/emitnative.c:1358 py/emitnative.c:1419
msgid "can't store to '%q'"
msgstr ""
#: py/emitnative.c:1369
msgid "can't store with '%q' index"
msgstr ""
#: py/emitnative.c:1540
msgid "can't implicitly convert '%q' to 'bool'"
msgstr ""
#: py/emitnative.c:1774
msgid "unary op %q not implemented"
msgstr ""
#: py/emitnative.c:1930
msgid "binary op %q not implemented"
msgstr ""
#: py/emitnative.c:1951
msgid "can't do binary op between '%q' and '%q'"
msgstr ""
#: py/emitnative.c:2126
msgid "casting"
msgstr ""
#: py/emitnative.c:2173
msgid "return expected '%q' but got '%q'"
msgstr ""
#: py/emitnative.c:2191
msgid "must raise an object"
msgstr ""
#: py/emitnative.c:2201
msgid "native yield"
msgstr ""
@ -617,140 +1157,140 @@ msgstr ""
msgid "expecting a dict for keyword args"
msgstr ""
#: py/moduerrno.c:108 py/moduerrno.c:111
#: py/moduerrno.c:143 py/moduerrno.c:146
msgid "Permission denied"
msgstr ""
#: py/moduerrno.c:109
#: py/moduerrno.c:144
msgid "No such file/directory"
msgstr ""
#: py/moduerrno.c:110
#: py/moduerrno.c:145
msgid "Input/output error"
msgstr ""
#: py/moduerrno.c:112
#: py/moduerrno.c:147
msgid "File exists"
msgstr ""
#: py/moduerrno.c:113
#: py/moduerrno.c:148
msgid "Unsupported operation"
msgstr ""
#: py/moduerrno.c:114
#: py/moduerrno.c:149
msgid "Invalid argument"
msgstr ""
#: py/obj.c:89
#: py/obj.c:90
msgid "Traceback (most recent call last):\n"
msgstr ""
#: py/obj.c:92
#: py/obj.c:94
msgid " File \"%q\", line %d"
msgstr ""
#: py/obj.c:94
#: py/obj.c:96
msgid " File \"%q\""
msgstr ""
#: py/obj.c:101
#: py/obj.c:100
msgid ", in %q\n"
msgstr ""
#: py/obj.c:241
#: py/obj.c:257
msgid "can't convert to int"
msgstr ""
#: py/obj.c:244
#: py/obj.c:260
#, c-format
msgid "can't convert %s to int"
msgstr ""
#: py/obj.c:304
#: py/obj.c:320
msgid "can't convert to float"
msgstr ""
#: py/obj.c:307
#: py/obj.c:323
#, c-format
msgid "can't convert %s to float"
msgstr ""
#: py/obj.c:337
#: py/obj.c:353
msgid "can't convert to complex"
msgstr ""
#: py/obj.c:340
#: py/obj.c:356
#, c-format
msgid "can't convert %s to complex"
msgstr ""
#: py/obj.c:355
#: py/obj.c:371
msgid "expected tuple/list"
msgstr ""
#: py/obj.c:358
#: py/obj.c:374
#, c-format
msgid "object '%s' is not a tuple or list"
msgstr ""
#: py/obj.c:369
#: py/obj.c:385
msgid "tuple/list has wrong length"
msgstr ""
#: py/obj.c:371
#: py/obj.c:387
#, c-format
msgid "requested length %d but object has length %d"
msgstr ""
#: py/obj.c:384
#: py/obj.c:400
msgid "indices must be integers"
msgstr ""
#: py/obj.c:387
#: py/obj.c:403
msgid "%q indices must be integers, not %s"
msgstr ""
#: py/obj.c:407
#: py/obj.c:423
msgid "%q index out of range"
msgstr ""
#: py/obj.c:439
#: py/obj.c:455
msgid "object has no len"
msgstr ""
#: py/obj.c:442
#: py/obj.c:458
#, c-format
msgid "object of type '%s' has no len()"
msgstr ""
#: py/obj.c:480
#: py/obj.c:496
msgid "object does not support item deletion"
msgstr ""
#: py/obj.c:483
#: py/obj.c:499
#, c-format
msgid "'%s' object does not support item deletion"
msgstr ""
#: py/obj.c:487
#: py/obj.c:503
msgid "object is not subscriptable"
msgstr ""
#: py/obj.c:490
#: py/obj.c:506
#, c-format
msgid "'%s' object is not subscriptable"
msgstr ""
#: py/obj.c:494
#: py/obj.c:510
msgid "object does not support item assignment"
msgstr ""
#: py/obj.c:497
#: py/obj.c:513
#, c-format
msgid "'%s' object does not support item assignment"
msgstr ""
#: py/obj.c:528
#: py/obj.c:544
msgid "object with buffer protocol required"
msgstr ""
@ -795,7 +1335,7 @@ msgstr ""
msgid "dict update sequence has wrong length"
msgstr ""
#: py/objfloat.c:308
#: py/objfloat.c:308 py/parsenum.c:331
msgid "complex values not supported"
msgstr ""
@ -1142,6 +1682,23 @@ msgstr ""
msgid "int() arg 2 must be >= 2 and <= 36"
msgstr ""
#: py/parsenum.c:151
msgid "invalid syntax for integer"
msgstr ""
#: py/parsenum.c:155
#, c-format
msgid "invalid syntax for integer with base %d"
msgstr ""
#: py/parsenum.c:339
msgid "invalid syntax for number"
msgstr ""
#: py/parsenum.c:342
msgid "decimal numbers not supported"
msgstr ""
#: py/persistentcode.c:223
msgid ""
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
@ -1253,6 +1810,18 @@ msgstr ""
msgid "stream operation not supported"
msgstr ""
#: py/vm.c:255
msgid "local variable referenced before assignment"
msgstr ""
#: py/vm.c:1142
msgid "no active exception to reraise"
msgstr ""
#: py/vm.c:1284
msgid "byte code not implemented"
msgstr ""
#: shared-bindings/_stage/Layer.c:71
msgid "graphic must be 2048 bytes long"
msgstr ""
@ -1298,6 +1867,10 @@ msgstr ""
msgid "destination_length must be an int >= 0"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c:199
msgid "Cannot record to a file"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c:202
msgid "Destination capacity is smaller than destination_length."
msgstr ""
@ -1426,6 +1999,10 @@ msgstr ""
msgid "Bytes must be between 0 and 255."
msgstr ""
#: shared-bindings/os/__init__.c:200
msgid "No hardware random available"
msgstr ""
#: shared-bindings/pulseio/PWMOut.c:164
msgid ""
"PWM duty_cycle must be between 0 and 65535 inclusive (16 bit resolution)"
@ -1546,6 +2123,14 @@ msgstr ""
msgid "Invalid file"
msgstr ""
#: shared-module/audioio/WaveFile.c:117
msgid "Couldn't allocate first buffer"
msgstr ""
#: shared-module/audioio/WaveFile.c:123
msgid "Couldn't allocate second buffer"
msgstr ""
#: shared-module/bitbangio/I2C.c:58
msgid "Clock stretch too long"
msgstr ""

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-09 13:43-0700\n"
"POT-Creation-Date: 2018-08-16 13:33-0700\n"
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -17,7 +17,121 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.1.1\n"
#: extmod/vfs_fat.c:426 py/moduerrno.c:115
#: extmod/machine_i2c.c:299
msgid "invalid I2C peripheral"
msgstr ""
#: extmod/machine_i2c.c:340 extmod/machine_i2c.c:354 extmod/machine_i2c.c:368
#: extmod/machine_i2c.c:392
msgid "I2C operation not supported"
msgstr ""
#: extmod/machine_mem.c:45
#, c-format
msgid "address %08x is not aligned to %d bytes"
msgstr ""
#: extmod/machine_spi.c:57
msgid "invalid SPI peripheral"
msgstr ""
#: extmod/machine_spi.c:124
msgid "buffers must be the same length"
msgstr ""
#: extmod/machine_spi.c:207
msgid "bits must be 8"
msgstr ""
#: extmod/machine_spi.c:210
msgid "firstbit must be MSB"
msgstr ""
#: extmod/machine_spi.c:215
msgid "must specify all of sck/mosi/miso"
msgstr ""
#: extmod/modframebuf.c:299
msgid "invalid format"
msgstr ""
#: extmod/modubinascii.c:38 extmod/moduhashlib.c:102
msgid "a bytes-like object is required"
msgstr ""
#: extmod/modubinascii.c:90
msgid "odd-length string"
msgstr ""
#: extmod/modubinascii.c:101
msgid "non-hex digit found"
msgstr ""
#: extmod/modubinascii.c:169
msgid "incorrect padding"
msgstr ""
#: extmod/moductypes.c:122
msgid "syntax error in uctypes descriptor"
msgstr ""
#: extmod/moductypes.c:219
msgid "Cannot unambiguously get sizeof scalar"
msgstr ""
#: extmod/moductypes.c:397
msgid "struct: no fields"
msgstr ""
#: extmod/moductypes.c:530
msgid "struct: cannot index"
msgstr ""
#: extmod/moductypes.c:544
msgid "struct: index out of range"
msgstr ""
#: extmod/moduheapq.c:38
msgid "heap must be a list"
msgstr ""
#: extmod/moduheapq.c:86 extmod/modutimeq.c:147 extmod/modutimeq.c:172
msgid "empty heap"
msgstr ""
#: extmod/modujson.c:281
msgid "syntax error in JSON"
msgstr ""
#: extmod/modure.c:161
msgid "Splitting with sub-captures"
msgstr ""
#: extmod/modure.c:207
msgid "Error in regex"
msgstr ""
#: extmod/modussl_axtls.c:81
msgid "invalid key"
msgstr ""
#: extmod/modussl_axtls.c:87
msgid "invalid cert"
msgstr ""
#: extmod/modutimeq.c:131
msgid "queue overflow"
msgstr ""
#: extmod/moduzlib.c:97
msgid "compression header"
msgstr ""
#: extmod/uos_dupterm.c:120
msgid "invalid dupterm index"
msgstr ""
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
msgid "Read-only filesystem"
msgstr ""
@ -25,82 +139,115 @@ msgstr ""
msgid "abort() called"
msgstr ""
#: lib/netutils/netutils.c:83
msgid "invalid arguments"
msgstr ""
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
msgid "script compilation not supported"
msgstr ""
#: main.c:137
#: main.c:143
msgid " output:\n"
msgstr ""
#: main.c:148 main.c:221
#: main.c:157 main.c:230
msgid ""
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
"disable.\n"
msgstr ""
#: main.c:150
#: main.c:159
msgid "Running in safe mode! Auto-reload is off.\n"
msgstr ""
#: main.c:152 main.c:223
#: main.c:161 main.c:232
msgid "Auto-reload is off.\n"
msgstr ""
#: main.c:166
#: main.c:175
msgid "Running in safe mode! Not running saved code.\n"
msgstr ""
#: main.c:182
#: main.c:191
msgid "WARNING: Your code filename has two extensions\n"
msgstr ""
#: main.c:230
#: main.c:239
msgid "You requested starting safe mode by "
msgstr ""
#: main.c:233
#: main.c:242
msgid "To exit, please reset the board without "
msgstr ""
#: main.c:240
#: main.c:249
msgid ""
"You are running in safe mode which means something really bad happened.\n"
msgstr ""
#: main.c:242
#: main.c:251
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
msgstr ""
#: main.c:243
#: main.c:252
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
msgstr ""
#: main.c:246
#: main.c:255
msgid ""
"The microcontroller's power dipped. Please make sure your power supply "
"provides\n"
msgstr ""
#: main.c:247
#: main.c:256
msgid ""
"enough power for the whole circuit and press reset (after ejecting "
"CIRCUITPY).\n"
msgstr ""
#: main.c:251
#: main.c:260
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
msgstr ""
#: main.c:406
#: main.c:415
msgid "soft reboot\n"
msgstr ""