Merge remote-tracking branch 'origin/main'

This commit is contained in:
Hosted Weblate 2023-12-23 17:34:29 +00:00
commit 3400815ebc
No known key found for this signature in database
GPG key ID: A3FAAA06E6569B4C
18 changed files with 73 additions and 67 deletions

View file

@ -86,6 +86,10 @@ msgstr ""
msgid "%q and %q must be different"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "%q and %q must share a clock unit"
msgstr ""
#: shared-bindings/microcontroller/Pin.c
msgid "%q contains duplicate pins"
msgstr ""
@ -198,6 +202,10 @@ msgstr ""
msgid "%q must be array of type 'h'"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c
msgid "%q must be multiple of 8."
msgstr ""
#: ports/raspberrypi/bindings/cyw43/__init__.c py/argcheck.c py/objexcept.c
#: shared-bindings/canio/CAN.c shared-bindings/digitalio/Pull.c
#: shared-module/synthio/Synthesizer.c
@ -233,6 +241,10 @@ msgstr ""
msgid "%q step cannot be zero"
msgstr ""
#: shared-module/bitbangio/I2C.c
msgid "%q too long"
msgstr ""
#: py/bc.c py/objnamedtuple.c
msgid "%q() takes %d positional arguments but %d were given"
msgstr ""
@ -425,12 +437,6 @@ msgstr ""
msgid "3-arg pow() not supported"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
msgid "A hardware interrupt channel is already in use"
msgstr ""
#: ports/raspberrypi/common-hal/wifi/Radio.c
msgid "AP could not be started"
msgstr ""
@ -611,14 +617,6 @@ msgstr ""
msgid "Bit clock and word select must be sequential GPIO pins"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Bit clock and word select must share a clock unit"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c
msgid "Bit depth must be multiple of 8."
msgstr ""
#: shared-bindings/bitmaptools/__init__.c
msgid "Bitmap size and bits per value must match"
msgstr ""
@ -631,10 +629,6 @@ msgstr ""
msgid "Both RX and TX required for flow control"
msgstr ""
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
msgid "Both pins must support hardware interrupts"
msgstr ""
#: shared-bindings/busdisplay/BusDisplay.c
#: shared-bindings/framebufferio/FramebufferDisplay.c
msgid "Brightness not adjustable"
@ -817,10 +811,6 @@ msgstr ""
msgid "CircuitPython core code crashed hard. Whoops!\n"
msgstr ""
#: shared-module/bitbangio/I2C.c
msgid "Clock stretch too long"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "Clock unit in use"
msgstr ""
@ -946,9 +936,12 @@ msgstr ""
msgid "ESP-IDF memory allocation failed"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/pin/PinAlarm.c
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
msgid "EXTINT channel already in use"
msgstr ""
@ -1108,13 +1101,6 @@ msgstr ""
msgid "Group already used"
msgstr ""
#: ports/atmel-samd/common-hal/busio/SPI.c ports/cxd56/common-hal/busio/SPI.c
#: ports/espressif/common-hal/busio/SPI.c
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/nrf/common-hal/busio/SPI.c
#: ports/raspberrypi/common-hal/busio/SPI.c
msgid "Half duplex SPI is not implemented"
msgstr ""
#: supervisor/shared/safe_mode.c
msgid "Hard fault: memory access or instruction error."
msgstr ""
@ -1347,10 +1333,6 @@ msgstr ""
msgid "Mapping must be a tuple"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c
msgid "Microphone startup delay must be in range 0.0 to 1.0"
msgstr ""
#: ports/raspberrypi/bindings/rp2pio/StateMachine.c
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
msgid "Mismatched data size"
@ -1492,10 +1474,15 @@ msgstr ""
msgid "No default %q bus"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
#: ports/atmel-samd/common-hal/touchio/TouchIn.c
msgid "No free GCLKs"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
msgid "No free GLCKs"
msgstr ""
#: shared-bindings/os/__init__.c
msgid "No hardware random available"
msgstr ""
@ -1694,10 +1681,6 @@ msgstr ""
msgid "Out-buffer elements must be <= 4 bytes long"
msgstr ""
#: shared-bindings/audiobusio/PDMIn.c
msgid "Oversample must be multiple of 8."
msgstr ""
#: shared-bindings/pwmio/PWMOut.c
msgid ""
"PWM frequency not writable when variable_frequency is False on construction."
@ -1749,6 +1732,7 @@ msgid "Pin must be on PWM Channel B"
msgstr ""
#: ports/atmel-samd/common-hal/countio/Counter.c
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
msgid "Pin must support hardware interrupts"
msgstr ""
@ -1824,6 +1808,10 @@ msgstr ""
msgid "RISE_AND_FALL not available on this chip"
msgstr ""
#: shared-module/displayio/OnDiskBitmap.c
msgid "RLE-compressed BMP not supported"
msgstr ""
#: ports/stm/common-hal/os/__init__.c
msgid "RNG DeInit Error"
msgstr ""
@ -2083,7 +2071,6 @@ msgstr ""
msgid "Total data to write is larger than %q"
msgstr ""
#: ports/atmel-samd/common-hal/alarm/touch/TouchAlarm.c
#: ports/raspberrypi/common-hal/alarm/touch/TouchAlarm.c
#: ports/stm/common-hal/alarm/touch/TouchAlarm.c
msgid "Touch alarms not available"
@ -2175,11 +2162,6 @@ msgstr ""
msgid "Unable to find I2C Display at %x"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Unable to find free GCLK"
msgstr ""
#: py/parse.c
msgid "Unable to init parser"
msgstr ""

View file

@ -235,7 +235,7 @@ static void pinalarm_set_alarms_light(size_t n_alarms, const mp_obj_t *alarms) {
case PINALARM_ERR_NOEXTINT:
raise_ValueError_invalid_pin();
case PINALARM_ERR_NOCHANNEL:
mp_raise_RuntimeError(MP_ERROR_TEXT("A hardware interrupt channel is already in use"));
mp_raise_RuntimeError(MP_ERROR_TEXT("EXTINT channel already in use"));
default:
mp_raise_RuntimeError(MP_ERROR_TEXT("Unknown reason."));
}

View file

@ -28,5 +28,5 @@
#include "shared-bindings/microcontroller/__init__.h"
void common_hal_alarm_touch_touchalarm_construct(alarm_touch_touchalarm_obj_t *self, const mcu_pin_obj_t *pin) {
mp_raise_NotImplementedError(MP_ERROR_TEXT("Touch alarms not available"));
mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_TouchAlarm);
}

View file

@ -159,7 +159,7 @@ void common_hal_audiobusio_i2sout_construct(audiobusio_i2sout_obj_t *self,
raise_ValueError_invalid_pin_name(MP_QSTR_word_select);
}
if (bc_clock_unit != ws_clock_unit) {
mp_raise_ValueError(MP_ERROR_TEXT("Bit clock and word select must share a clock unit"));
mp_raise_ValueError_varg(MP_ERROR_TEXT("%q and %q must share a clock unit"), MP_QSTR_bit_clock, MP_QSTR_word_select);
}
if (serializer == 0xff) {
raise_ValueError_invalid_pin_name(MP_QSTR_data);
@ -243,7 +243,7 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t *self,
// Find a free GCLK to generate the MCLK signal.
uint8_t gclk = find_free_gclk(divisor);
if (gclk > GCLK_GEN_NUM) {
mp_raise_RuntimeError(MP_ERROR_TEXT("Unable to find free GCLK"));
mp_raise_RuntimeError(MP_ERROR_TEXT("No free GLCKs"));
}
self->gclk = gclk;

View file

@ -194,7 +194,7 @@ void common_hal_audiobusio_pdmin_construct(audiobusio_pdmin_obj_t *self,
// Find a free GCLK to generate the MCLK signal.
uint8_t gclk = find_free_gclk(clock_divisor);
if (gclk > GCLK_GEN_NUM) {
mp_raise_RuntimeError(MP_ERROR_TEXT("Unable to find free GCLK"));
mp_raise_RuntimeError(MP_ERROR_TEXT("No free GCLKs"));
}
self->gclk = gclk;

View file

@ -58,7 +58,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
uint8_t dopo = 255;
if (half_duplex) {
mp_raise_NotImplementedError(MP_ERROR_TEXT("Half duplex SPI is not implemented"));
mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_half_duplex);
}
// Ensure the object starts in its deinit state.

View file

@ -17,7 +17,7 @@ void common_hal_countio_counter_construct(countio_counter_obj_t *self,
if (eic_get_enable()) {
if (!eic_channel_free(pin->extint_channel)) {
mp_raise_RuntimeError(MP_ERROR_TEXT("A hardware interrupt channel is already in use"));
mp_raise_RuntimeError(MP_ERROR_TEXT("EXTINT channel already in use"));
}
} else {
turn_on_external_interrupt_controller();

View file

@ -37,7 +37,7 @@
void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencoder_obj_t *self,
const mcu_pin_obj_t *pin_a, const mcu_pin_obj_t *pin_b) {
if (!pin_a->has_extint || !pin_b->has_extint) {
mp_raise_RuntimeError(MP_ERROR_TEXT("Both pins must support hardware interrupts"));
mp_raise_RuntimeError(MP_ERROR_TEXT("Pin must support hardware interrupts"));
}
// TODO: The SAMD51 has a peripheral dedicated to quadrature encoder debugging. Use it instead
@ -45,7 +45,7 @@ void common_hal_rotaryio_incrementalencoder_construct(rotaryio_incrementalencode
if (eic_get_enable()) {
if (!eic_channel_free(pin_a->extint_channel) || !eic_channel_free(pin_b->extint_channel)) {
mp_raise_RuntimeError(MP_ERROR_TEXT("A hardware interrupt channel is already in use"));
mp_raise_RuntimeError(MP_ERROR_TEXT("EXTINT channel already in use"));
}
} else {
turn_on_external_interrupt_controller();

View file

@ -40,7 +40,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self, const mcu_pin_obj_t *
int port = -1;
if (half_duplex) {
mp_raise_NotImplementedError(MP_ERROR_TEXT("Half duplex SPI is not implemented"));
mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_half_duplex);
}
if (clock->number == PIN_SPI4_SCK &&

View file

@ -20,6 +20,9 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_D33), MP_ROM_PTR(&pin_GPIO33) },
{ MP_ROM_QSTR(MP_QSTR_A33), MP_ROM_PTR(&pin_GPIO33) },
{ MP_ROM_QSTR(MP_QSTR_IR), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO12) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO21) },
{ MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_GPIO21) },

View file

@ -25,5 +25,23 @@
*/
#include "supervisor/board.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "components/driver/gpio/include/driver/gpio.h"
bool espressif_board_reset_pin_number(gpio_num_t pin_number) {
// Pull USER_PWR_SHUTDOWN down (pull up shuts down power)
if (pin_number == 21) {
gpio_config_t cfg = {
.pin_bit_mask = BIT64(pin_number),
.mode = GPIO_MODE_DISABLE,
.pull_up_en = false,
.pull_down_en = true,
.intr_type = GPIO_INTR_DISABLE,
};
gpio_config(&cfg);
return true;
}
return false;
}
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.

View file

@ -88,7 +88,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
};
if (half_duplex) {
mp_raise_NotImplementedError(MP_ERROR_TEXT("Half duplex SPI is not implemented"));
mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_half_duplex);
}
for (spi_host_device_t host_id = SPI2_HOST; host_id < SOC_SPI_PERIPH_NUM; host_id++) {

View file

@ -99,7 +99,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
bool spi_taken = false;
if (half_duplex) {
mp_raise_NotImplementedError(MP_ERROR_TEXT("Half duplex SPI is not implemented"));
mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_half_duplex);
}
for (uint i = 0; i < sck_count; i++) {

View file

@ -146,7 +146,7 @@ static nrf_spim_frequency_t baudrate_to_spim_frequency(const uint32_t baudrate)
void common_hal_busio_spi_construct(busio_spi_obj_t *self, const mcu_pin_obj_t *clock, const mcu_pin_obj_t *mosi, const mcu_pin_obj_t *miso, bool half_duplex) {
if (half_duplex) {
mp_raise_NotImplementedError(MP_ERROR_TEXT("Half duplex SPI is not implemented"));
mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_half_duplex);
}
// Find a free instance, with most desirable (highest freq and not shared) allocated first.

View file

@ -58,7 +58,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
size_t instance_index = NO_INSTANCE;
if (half_duplex) {
mp_raise_NotImplementedError(MP_ERROR_TEXT("Half duplex SPI is not implemented"));
mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_half_duplex);
}
if (clock->number % 4 == 2) {

View file

@ -99,11 +99,11 @@ STATIC mp_obj_t audiobusio_pdmin_make_new(const mp_obj_type_t *type, size_t n_ar
static const mp_arg_t allowed_args[] = {
{ MP_QSTR_clock_pin, MP_ARG_REQUIRED | MP_ARG_OBJ },
{ MP_QSTR_data_pin, MP_ARG_REQUIRED | MP_ARG_OBJ },
{ MP_QSTR_sample_rate, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 16000} },
{ MP_QSTR_bit_depth, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 8} },
{ MP_QSTR_sample_rate, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 16000} },
{ MP_QSTR_bit_depth, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 8} },
{ MP_QSTR_mono, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = true} },
{ MP_QSTR_oversample, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 64} },
{ MP_QSTR_startup_delay, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
{ MP_QSTR_oversample, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 64} },
{ MP_QSTR_startup_delay, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
};
// Default microphone startup delay is 110msecs. Have seen mics that need 100 msecs plus a bit.
static const float STARTUP_DELAY_DEFAULT = 0.110F;
@ -120,20 +120,18 @@ STATIC mp_obj_t audiobusio_pdmin_make_new(const mp_obj_type_t *type, size_t n_ar
uint32_t sample_rate = args[ARG_sample_rate].u_int;
uint8_t bit_depth = args[ARG_bit_depth].u_int;
if (bit_depth % 8 != 0) {
mp_raise_ValueError(MP_ERROR_TEXT("Bit depth must be multiple of 8."));
mp_raise_ValueError_varg(MP_ERROR_TEXT("%q must be multiple of 8."), MP_QSTR_bit_depth);
}
uint8_t oversample = args[ARG_oversample].u_int;
if (oversample % 8 != 0) {
mp_raise_ValueError(MP_ERROR_TEXT("Oversample must be multiple of 8."));
mp_raise_ValueError_varg(MP_ERROR_TEXT("%q must be multiple of 8."), MP_QSTR_oversample);
}
bool mono = args[ARG_mono].u_bool;
mp_float_t startup_delay = (args[ARG_startup_delay].u_obj == MP_OBJ_NULL)
? (mp_float_t)STARTUP_DELAY_DEFAULT
: mp_obj_get_float(args[ARG_startup_delay].u_obj);
if (startup_delay < 0.0 || startup_delay > 1.0) {
mp_raise_ValueError(MP_ERROR_TEXT("Microphone startup delay must be in range 0.0 to 1.0"));
}
mp_arg_validate_float_range(startup_delay, 0.0f, 1.0f, MP_QSTR_startup_delay);
common_hal_audiobusio_pdmin_construct(self, clock_pin, data_pin, sample_rate,
bit_depth, mono, oversample);

View file

@ -55,7 +55,7 @@ STATIC void scl_release(bitbangio_i2c_obj_t *self) {
common_hal_digitalio_digitalinout_switch_to_output(&self->scl, true, DRIVE_MODE_OPEN_DRAIN);
// raise exception on timeout
if (count == 0) {
mp_raise_msg(&mp_type_TimeoutError, MP_ERROR_TEXT("Clock stretch too long"));
mp_raise_msg_varg(&mp_type_TimeoutError, MP_ERROR_TEXT("%q too long"), MP_QSTR_timeout);
}
}

View file

@ -61,6 +61,11 @@ 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);
// 0 is uncompressed; 3 is bitfield compressed. 1 and 2 are RLE compression.
if (compression != 0 && compression != 3) {
mp_raise_ValueError(MP_ERROR_TEXT("RLE-compressed BMP not supported"));
}
bool indexed = bits_per_pixel <= 8;
self->bitfield_compressed = (compression == 3);
self->bits_per_pixel = bits_per_pixel;