Merge branch 'master' into update-ulab
This commit is contained in:
commit
a170c5e13a
19
Makefile
19
Makefile
@ -202,12 +202,25 @@ pseudoxml:
|
||||
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
||||
|
||||
# phony target so we always run
|
||||
.PHONY: all-source
|
||||
all-source:
|
||||
|
||||
locale/circuitpython.pot: all-source
|
||||
find $(TRANSLATE_SOURCES) -iname "*.c" -print | (LC_ALL=C sort) | xgettext -f- -L C -s --add-location=file --keyword=translate -o circuitpython.pot -p locale
|
||||
|
||||
# Historically, `make translate` updated the .pot file and ran msgmerge.
|
||||
# However, this was a frequent source of merge conflicts. Weblate can perform
|
||||
# msgmerge, so make translate merely update the translation template file.
|
||||
.PHONY: translate
|
||||
translate: locale/circuitpython.pot
|
||||
|
||||
# Note that normally we rely on weblate to perform msgmerge. This reduces the
|
||||
# chance of a merge conflict between developer changes (that only add and
|
||||
# remove source strings) and weblate changes (that only add and remove
|
||||
# translated strings from po files). However, in case this is legitimately
|
||||
# needed we preserve a rule to do it.
|
||||
.PHONY: msgmerge
|
||||
msgmerge:
|
||||
for po in $(shell ls locale/*.po); do msgmerge -U $$po -s --no-fuzzy-matching --add-location=file locale/circuitpython.pot; done
|
||||
|
||||
merge-translate:
|
||||
@ -216,8 +229,10 @@ merge-translate:
|
||||
git checkout --theirs -- locale/*
|
||||
make translate
|
||||
|
||||
check-translate: locale/circuitpython.pot $(wildcard locale/*.po)
|
||||
$(PYTHON) tools/check_translations.py $^
|
||||
.PHONY: check-translate
|
||||
check-translate:
|
||||
find $(TRANSLATE_SOURCES) -iname "*.c" -print | (LC_ALL=C sort) | xgettext -f- -L C -s --add-location=file --keyword=translate -o circuitpython.pot.tmp -p locale
|
||||
$(PYTHON) tools/check_translations.py locale/circuitpython.pot.tmp locale/circuitpython.pot; status=$$?; rm -f locale/circuitpython.pot.tmp; exit $$status
|
||||
|
||||
stubs:
|
||||
@mkdir -p circuitpython-stubs
|
||||
|
14
locale/fr.po
14
locale/fr.po
@ -8,9 +8,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-06-01 08:56-0500\n"
|
||||
"PO-Revision-Date: 2020-05-26 19:37+0000\n"
|
||||
"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2020-06-01 13:17+0000\n"
|
||||
"Last-Translator: David Glaude <david.glaude@gmail.com>\n"
|
||||
"Language-Team: French <https://later.unpythonic.net/projects/circuitpython/"
|
||||
"circuitpython-master/fr/>\n"
|
||||
"Language: fr\n"
|
||||
@ -190,12 +190,12 @@ msgstr "l'objet '%s' n'est pas un itérateur"
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "objet '%s' n'est pas appelable"
|
||||
msgstr "l'objet '%s' n'est pas appelable"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "objet '%s' n'est pas itérable"
|
||||
msgstr "l'objet '%s' n'est pas itérable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
@ -388,7 +388,7 @@ msgstr "La profondeur de bit doit être un multiple de 8."
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c
|
||||
msgid "Both RX and TX required for flow control"
|
||||
msgstr ""
|
||||
msgstr "RX et TX requis pour le contrôle de flux"
|
||||
|
||||
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
||||
msgid "Both pins must support hardware interrupts"
|
||||
@ -1282,7 +1282,7 @@ msgstr "La broche ne peut être utilisée pour l'ADC"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
msgstr "La broche est entrée uniquement"
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
|
@ -3196,7 +3196,7 @@ msgstr "oväntat nyckelordsargument '%q'"
|
||||
|
||||
#: py/lexer.c
|
||||
msgid "unicode name escapes"
|
||||
msgstr "unicode name escapes"
|
||||
msgstr "unicode-namn flyr"
|
||||
|
||||
#: py/parse.c
|
||||
msgid "unindent does not match any outer indentation level"
|
||||
|
@ -29,6 +29,8 @@
|
||||
#include <sys/boardctl.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <cxd56_rtc.h>
|
||||
|
||||
#include "sched/sched.h"
|
||||
|
||||
#include "boards/board.h"
|
||||
@ -45,7 +47,8 @@
|
||||
safe_mode_t port_init(void) {
|
||||
boardctl(BOARDIOC_INIT, 0);
|
||||
|
||||
board_init();
|
||||
// Wait until RTC is available
|
||||
while (g_rtc_enabled == false);
|
||||
|
||||
if (board_requests_safe_mode()) {
|
||||
return USER_SAFE_MODE;
|
||||
@ -121,14 +124,10 @@ void board_timerhook(void)
|
||||
}
|
||||
|
||||
uint64_t port_get_raw_ticks(uint8_t* subticks) {
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
long computed_subticks = tv.tv_usec * 1024 * 32 / 1000000;
|
||||
if (subticks != NULL) {
|
||||
*subticks = computed_subticks % 32;
|
||||
}
|
||||
uint64_t count = cxd56_rtc_count();
|
||||
*subticks = count % 32;
|
||||
|
||||
return tv.tv_sec * 1024 + computed_subticks / 32;
|
||||
return count / 32;
|
||||
}
|
||||
|
||||
// Enable 1/1024 second tick.
|
||||
|
@ -168,7 +168,7 @@ STATIC const mp_rom_map_elem_t storage_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_erase_filesystem), MP_ROM_PTR(&storage_erase_filesystem_obj) },
|
||||
|
||||
//| class VfsFat:
|
||||
//| def __init__(self, block_device: Any): ...
|
||||
//| def __init__(self, block_device: Any):
|
||||
//| """Create a new VfsFat filesystem around the given block device.
|
||||
//|
|
||||
//| :param block_device: Block device the the filesystem lives on"""
|
||||
@ -177,8 +177,9 @@ STATIC const mp_rom_map_elem_t storage_module_globals_table[] = {
|
||||
//| """The filesystem label, up to 11 case-insensitive bytes. Note that
|
||||
//| this property can only be set when the device is writable by the
|
||||
//| microcontroller."""
|
||||
//| ...
|
||||
//|
|
||||
//| def mkfs(self, ) -> Any:
|
||||
//| def mkfs(self) -> Any:
|
||||
//| """Format the block device, deleting any data that may have been there"""
|
||||
//| ...
|
||||
//|
|
||||
@ -211,7 +212,7 @@ STATIC const mp_rom_map_elem_t storage_module_globals_table[] = {
|
||||
//| """Don't call this directly, call `storage.mount`."""
|
||||
//| ...
|
||||
//|
|
||||
//| def umount(self, ) -> Any:
|
||||
//| def umount(self) -> Any:
|
||||
//| """Don't call this directly, call `storage.umount`."""
|
||||
//| ...
|
||||
//|
|
||||
|
@ -187,6 +187,24 @@ typedef struct {
|
||||
.single_status_byte = false, \
|
||||
}
|
||||
|
||||
// Settings for the Gigadevice GD25S512MD 64MiB SPI flash.
|
||||
// Datasheet: http://www.gigadevice.com/datasheet/gd25s512md/
|
||||
#define GD25S512MD {\
|
||||
.total_size = (1 << 26), /* 64 MiB */ \
|
||||
.start_up_time_us = 5000, \
|
||||
.manufacturer_id = 0xc8, \
|
||||
.memory_type = 0x40, \
|
||||
.capacity = 0x19, \
|
||||
.max_clock_speed_mhz = 104, /* if we need 120 then we can turn on high performance mode */ \
|
||||
.quad_enable_bit_mask = 0x02, \
|
||||
.has_sector_protection = false, \
|
||||
.supports_fast_read = true, \
|
||||
.supports_qspi = true, \
|
||||
.supports_qspi_writes = true, \
|
||||
.write_status_register_split = true, \
|
||||
.single_status_byte = false, \
|
||||
}
|
||||
|
||||
// Settings for the Cypress (was Spansion) S25FL064L 8MiB SPI flash.
|
||||
// Datasheet: http://www.cypress.com/file/316661/download
|
||||
#define S25FL064L {\
|
||||
|
@ -53,7 +53,7 @@ extension_by_board = {
|
||||
|
||||
# nRF52840 dev kits that may not have UF2 bootloaders,
|
||||
"makerdiary_nrf52840_mdk": HEX,
|
||||
"makerdiary_nrf52840_mdk_usb_dongle": HEX,
|
||||
"makerdiary_nrf52840_mdk_usb_dongle": HEX_UF2,
|
||||
"pca10056": BIN_UF2,
|
||||
"pca10059": BIN_UF2,
|
||||
"electronut_labs_blip": HEX
|
||||
|
Loading…
Reference in New Issue
Block a user