merge from upstream

crypto-aes
Dan Halbert 3 years ago
commit 23d6a3dc1f
  1. 68
      .github/workflows/build.yml
  2. 5
      .gitmodules
  3. 2
      Makefile
  4. 13
      README.rst
  5. 1
      conf.py
  6. 6
      docs/shared_bindings_matrix.py
  7. 34
      extmod/modframebuf.c
  8. 29
      extmod/vfs_fat.c
  9. 3
      extmod/vfs_fat_file.c
  10. 2
      frozen/Adafruit_CircuitPython_BusDevice
  11. 2
      frozen/Adafruit_CircuitPython_CircuitPlayground
  12. 2
      frozen/Adafruit_CircuitPython_Crickit
  13. 2
      frozen/Adafruit_CircuitPython_DotStar
  14. 2
      frozen/Adafruit_CircuitPython_HID
  15. 2
      frozen/Adafruit_CircuitPython_IRRemote
  16. 2
      frozen/Adafruit_CircuitPython_LIS3DH
  17. 2
      frozen/Adafruit_CircuitPython_Motor
  18. 2
      frozen/Adafruit_CircuitPython_NeoPixel
  19. 1
      frozen/Adafruit_CircuitPython_Register
  20. 2
      frozen/Adafruit_CircuitPython_SD
  21. 2
      frozen/Adafruit_CircuitPython_Thermistor
  22. 2
      frozen/Adafruit_CircuitPython_seesaw
  23. 2
      frozen/circuitpython-stage
  24. 2
      lib/mp-readline/readline.c
  25. 2
      lib/tinyusb
  26. 305
      locale/ID.po
  27. 305
      locale/circuitpython.pot
  28. 329
      locale/de_DE.po
  29. 305
      locale/en_US.po
  30. 305
      locale/en_x_pirate.po
  31. 337
      locale/es.po
  32. 324
      locale/fil.po
  33. 339
      locale/fr.po
  34. 328
      locale/it_IT.po
  35. 305
      locale/ko.po
  36. 335
      locale/pl.po
  37. 305
      locale/pt_BR.po
  38. 411
      locale/zh_Latn_pinyin.po
  39. 5
      main.c
  40. 7
      mpy-cross/.gitignore
  41. 82
      mpy-cross/Makefile
  42. 5
      mpy-cross/Makefile.static
  43. 6
      mpy-cross/Makefile.static-mingw
  44. 8
      mpy-cross/Makefile.static-raspbian
  45. 49
      mpy-cross/fmode.c
  46. 37
      mpy-cross/fmode.h
  47. 6
      mpy-cross/main.c
  48. 81
      mpy-cross/mpy-cross.mk
  49. 4
      ports/atmel-samd/audio_dma.c
  50. 7
      ports/atmel-samd/boards/capablerobot_usbhub/board.c
  51. 4
      ports/atmel-samd/boards/capablerobot_usbhub/mpconfigboard.mk
  52. 5
      ports/atmel-samd/boards/capablerobot_usbhub/pins.c
  53. 40
      ports/atmel-samd/boards/circuitbrains_basic_m0/board.c
  54. 35
      ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h
  55. 16
      ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.mk
  56. 35
      ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c
  57. 40
      ports/atmel-samd/boards/circuitbrains_deluxe_m4/board.c
  58. 32
      ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h
  59. 16
      ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.mk
  60. 55
      ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c
  61. 12
      ports/atmel-samd/boards/circuitplayground_express/board.c
  62. 4
      ports/atmel-samd/boards/circuitplayground_express/mpconfigboard.h
  63. 12
      ports/atmel-samd/boards/circuitplayground_express_crickit/board.c
  64. 4
      ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.h
  65. 2
      ports/atmel-samd/boards/circuitplayground_express_crickit/mpconfigboard.mk
  66. 12
      ports/atmel-samd/boards/circuitplayground_express_displayio/board.c
  67. 4
      ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.h
  68. 1
      ports/atmel-samd/boards/circuitplayground_express_displayio/mpconfigboard.mk
  69. 23
      ports/atmel-samd/boards/feather_m4_express/pins.c
  70. 2
      ports/atmel-samd/boards/hallowing_m4_express/board.c
  71. 2
      ports/atmel-samd/boards/metro_m4_express/mpconfigboard.mk
  72. 2
      ports/atmel-samd/boards/monster_m4sk/board.c
  73. 39
      ports/atmel-samd/boards/ndgarage_ndbit6/board.c
  74. 32
      ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.h
  75. 15
      ports/atmel-samd/boards/ndgarage_ndbit6/mpconfigboard.mk
  76. 39
      ports/atmel-samd/boards/ndgarage_ndbit6/pins.c
  77. 107
      ports/atmel-samd/boards/openbook_m4/board.c
  78. 28
      ports/atmel-samd/boards/openbook_m4/mpconfigboard.h
  79. 14
      ports/atmel-samd/boards/openbook_m4/mpconfigboard.mk
  80. 71
      ports/atmel-samd/boards/openbook_m4/pins.c
  81. 2
      ports/atmel-samd/boards/pewpew_m4/board.c
  82. 3
      ports/atmel-samd/boards/pewpew_m4/mpconfigboard.mk
  83. 8
      ports/atmel-samd/boards/pybadge/board.c
  84. 2
      ports/atmel-samd/boards/pybadge/mpconfigboard.h
  85. 4
      ports/atmel-samd/boards/pybadge_airlift/board.c
  86. 2
      ports/atmel-samd/boards/pybadge_airlift/mpconfigboard.h
  87. 61
      ports/atmel-samd/boards/pycubed/board.c
  88. 34
      ports/atmel-samd/boards/pycubed/mpconfigboard.h
  89. 24
      ports/atmel-samd/boards/pycubed/mpconfigboard.mk
  90. 55
      ports/atmel-samd/boards/pycubed/pins.c
  91. 8
      ports/atmel-samd/boards/pygamer/board.c
  92. 2
      ports/atmel-samd/boards/pygamer/mpconfigboard.h
  93. 4
      ports/atmel-samd/boards/pygamer_advance/board.c
  94. 2
      ports/atmel-samd/boards/pygamer_advance/mpconfigboard.h
  95. 13
      ports/atmel-samd/boards/sam32/mpconfigboard.h
  96. 7
      ports/atmel-samd/boards/sam32/mpconfigboard.mk
  97. 33
      ports/atmel-samd/boards/sam32/pins.c
  98. 39
      ports/atmel-samd/boards/seeeduino_xiao/board.c
  99. 20
      ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.h
  100. 13
      ports/atmel-samd/boards/seeeduino_xiao/mpconfigboard.mk
  101. Some files were not shown because too many files have changed in this diff Show More

@ -22,7 +22,8 @@ jobs:
python-version: 3.5
- name: Install deps
run: |
sudo apt-get install -y gettext librsvg2-bin
sudo apt-get install -y eatmydata
sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64
pip install requests sh click setuptools cpp-coveralls Sphinx sphinx-rtd-theme recommonmark sphinxcontrib-svg2pdfconverter polib pyyaml
- name: Versions
run: |
@ -66,6 +67,54 @@ jobs:
run: python3 -u ci_new_boards_check.py
working-directory: tools
- name: Build mpy-cross.static-raspbian
run: make -C mpy-cross -j2 -f Makefile.static-raspbian
- uses: actions/upload-artifact@v1.0.0
with:
name: mpy-cross.static-raspbian
path: mpy-cross/mpy-cross.static-raspbian
- name: Build mpy-cross.static
run: make -C mpy-cross -j2 -f Makefile.static
- uses: actions/upload-artifact@v1.0.0
with:
name: mpy-cross.static-amd64-linux
path: mpy-cross/mpy-cross.static
- name: Build mpy-cross.static-mingw
run: make -C mpy-cross -j2 -f Makefile.static-mingw
- uses: actions/upload-artifact@v1.0.0
with:
name: mpy-cross.static-x64-windows
path: mpy-cross/mpy-cross.static.exe
mpy-cross-mac:
runs-on: macos-latest
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- name: Install deps
run: |
brew link --force gettext
- name: Versions
run: |
gcc --version
python3 --version
msgfmt --version
- uses: actions/checkout@v1
with:
submodules: true
- name: CircuitPython version
run: git describe --dirty --always --tags
- name: Build mpy-cross
run: make -C mpy-cross -j2
- uses: actions/upload-artifact@v1.0.0
with:
name: mpy-cross-macos-catalina
path: mpy-cross/mpy-cross
build-arm:
runs-on: ubuntu-16.04
needs: test
@ -73,6 +122,7 @@ jobs:
fail-fast: false
matrix:
board:
- "aramcon_badge_2019"
- "arduino_mkr1300"
- "arduino_mkrzero"
- "arduino_nano_33_ble"
@ -80,6 +130,8 @@ jobs:
- "bast_pro_mini_m0"
- "capablerobot_usbhub"
- "catwan_usbstick"
- "circuitbrains_basic_m0"
- "circuitbrains_deluxe_m4"
- "circuitplayground_bluefruit"
- "circuitplayground_express"
- "circuitplayground_express_crickit"
@ -94,6 +146,9 @@ jobs:
- "electronut_labs_blip"
- "electronut_labs_papyr"
- "escornabot_makech"
- "espruino_pico"
- "espruino_wifi"
- "feather_bluefruit_sense"
- "feather_m0_adalogger"
- "feather_m0_basic"
- "feather_m0_express"
@ -102,6 +157,7 @@ jobs:
- "feather_m0_rfm9x"
- "feather_m0_supersized"
- "feather_m4_express"
- "feather_m7_1011"
- "feather_mimxrt1011"
- "feather_mimxrt1062"
- "feather_nrf52840_express"
@ -112,12 +168,15 @@ jobs:
- "hallowing_m0_express"
- "hallowing_m4_express"
- "imxrt1010_evk"
- "imxrt1020_evk"
- "imxrt1060_evk"
- "itsybitsy_m0_express"
- "itsybitsy_m4_express"
- "itsybitsy_nrf52840_express"
- "kicksat-sprite"
- "makerdiary_nrf52840_mdk"
- "makerdiary_nrf52840_mdk_usb_dongle"
- "meowbit_v121"
- "meowmeow"
- "metro_m0_express"
- "metro_m4_airlift_lite"
@ -125,6 +184,9 @@ jobs:
- "metro_nrf52840_express"
- "mini_sam_m4"
- "monster_m4sk"
- "ndgarage_ndbit6"
- "ohs2020_badge"
- "openbook_m4"
- "particle_argon"
- "particle_boron"
- "particle_xenon"
@ -137,6 +199,7 @@ jobs:
- "pybadge"
- "pybadge_airlift"
- "pyboard_v11"
- "pycubed"
- "pygamer"
- "pygamer_advance"
- "pyportal"
@ -144,6 +207,7 @@ jobs:
- "pyruler"
- "robohatmm1_m4"
- "sam32"
- "seeeduino_xiao"
- "serpente"
- "shirtty"
- "snekboard"
@ -158,7 +222,9 @@ jobs:
- "stm32f411ce_blackpill"
- "stm32f411ve_discovery"
- "stm32f412zg_discovery"
- "stm32f4_discovery"
- "stringcar_m0_express"
- "teensy40"
- "teknikio_bluebird"
- "trellis_m4_express"
- "trinket_m0"

5
.gitmodules vendored

@ -110,4 +110,7 @@
url = https://github.com/adafruit/Adafruit_MP3
[submodule "ports/mimxrt10xx/sdk"]
path = ports/mimxrt10xx/sdk
url = https://github.com/arturo182/MIMXRT10xx_SDK
url = https://github.com/adafruit/MIMXRT10xx_SDK
[submodule "frozen/Adafruit_CircuitPython_Register"]
path = frozen/Adafruit_CircuitPython_Register
url = https://github.com/adafruit/Adafruit_CircuitPython_Register.git

@ -36,7 +36,7 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(BASEOPTS)
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(BASEOPTS)
TRANSLATE_SOURCES = extmod lib main.c ports/atmel-samd ports/nrf py shared-bindings shared-module supervisor
TRANSLATE_SOURCES = extmod lib main.c ports/atmel-samd ports/cxd56 ports/mimxrt10xx ports/nrf ports/stm32f4 py shared-bindings shared-module supervisor
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext stubs

@ -94,13 +94,12 @@ Differences from `MicroPython <https://github.com/micropython/micropython>`__
CircuitPython:
- includes ports for MicroChip SAMD21 (Commonly known as M0 in Adafruit
product names) and SAMD51 (M4).
- supports only SAMD21, SAMD51, and nRF52840 ports.
- tracks MicroPython's releases (not master).
- floats (aka decimals) are enabled for all builds.
- error messages are translated into 10+ languages.
- does not support concurrency within Python (including interrupts and threading). Some concurrency
- Supports native USB on all boards, allowing file editing without special tools.
- Supports only SAMD21, SAMD51, nRF52840, CXD56, STM32F4 and i.MX RT ports.
- Tracks MicroPython's releases (not master).
- Floats (aka decimals) are enabled for all builds.
- Error messages are translated into 10+ languages.
- Does not support concurrency within Python (including interrupts and threading). Some concurrency
is achieved with native modules for tasks that require it such as audio file playback.
Behavior

@ -125,6 +125,7 @@ exclude_patterns = ["**/build*",
"ports/cc3200",
"ports/cc3200/FreeRTOS",
"ports/cc3200/hal",
"ports/cxd56/mkspk",
"ports/cxd56/spresense-exported-sdk",
"ports/esp32",
"ports/esp8266/boards",

@ -185,7 +185,7 @@ def get_excluded_boards(base):
board_is_excluded = True
# check if module is specifically disabled for this board
re_pattern = "CIRCUITPY_{}\s=\s(\w)".format(module.upper())
re_pattern = r"CIRCUITPY_{}\s=\s(\w)".format(module.upper())
find_module = re.search(re_pattern, contents)
if not find_module:
if base[module]["default_value"].isdigit():
@ -204,9 +204,7 @@ def get_excluded_boards(base):
]):
check_dependent_modules[module] = base[module]["default_value"]
else:
if (find_module.group(1) == "0" and
find_module.group(1) != base[module]["default_value"]):
board_is_excluded = True
board_is_excluded = find_module.group(1) == "0"
if board_is_excluded:
if board_chip in base[module]["excluded"]:

@ -28,6 +28,7 @@
#include <string.h>
#include "py/runtime.h"
#include "py/objtype.h"
#include "py/proto.h"
#if MICROPY_PY_FRAMEBUF
@ -304,9 +305,18 @@ STATIC mp_obj_t framebuf_make_new(const mp_obj_type_t *type, size_t n_args, cons
return MP_OBJ_FROM_PTR(o);
}
STATIC const mp_obj_type_t mp_type_framebuf;
// Helper to ensure we have the native super class instead of a subclass.
static mp_obj_framebuf_t* native_framebuf(mp_obj_t framebuf_obj) {
mp_obj_t native_framebuf = mp_instance_cast_to_native_base(framebuf_obj, &mp_type_framebuf);
mp_obj_assert_native_inited(native_framebuf);
return MP_OBJ_TO_PTR(native_framebuf);
}
STATIC mp_int_t framebuf_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) {
(void)flags;
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(self_in);
mp_obj_framebuf_t *self = native_framebuf(self_in);
bufinfo->buf = self->buf;
bufinfo->len = self->stride * self->height * (self->format == FRAMEBUF_RGB565 ? 2 : 1);
bufinfo->typecode = 'B'; // view framebuf as bytes
@ -314,7 +324,7 @@ STATIC mp_int_t framebuf_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo,
}
STATIC mp_obj_t framebuf_fill(mp_obj_t self_in, mp_obj_t col_in) {
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(self_in);
mp_obj_framebuf_t *self = native_framebuf(self_in);
mp_int_t col = mp_obj_get_int(col_in);
formats[self->format].fill_rect(self, 0, 0, self->width, self->height, col);
return mp_const_none;
@ -324,7 +334,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(framebuf_fill_obj, framebuf_fill);
STATIC mp_obj_t framebuf_fill_rect(size_t n_args, const mp_obj_t *args) {
(void)n_args;
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args[0]);
mp_obj_framebuf_t *self = native_framebuf(args[0]);
mp_int_t x = mp_obj_get_int(args[1]);
mp_int_t y = mp_obj_get_int(args[2]);
mp_int_t width = mp_obj_get_int(args[3]);
@ -338,7 +348,7 @@ STATIC mp_obj_t framebuf_fill_rect(size_t n_args, const mp_obj_t *args) {
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_fill_rect_obj, 6, 6, framebuf_fill_rect);
STATIC mp_obj_t framebuf_pixel(size_t n_args, const mp_obj_t *args) {
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args[0]);
mp_obj_framebuf_t *self = native_framebuf(args[0]);
mp_int_t x = mp_obj_get_int(args[1]);
mp_int_t y = mp_obj_get_int(args[2]);
if (0 <= x && x < self->width && 0 <= y && y < self->height) {
@ -357,7 +367,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_pixel_obj, 3, 4, framebuf_pi
STATIC mp_obj_t framebuf_hline(size_t n_args, const mp_obj_t *args) {
(void)n_args;
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args[0]);
mp_obj_framebuf_t *self = native_framebuf(args[0]);
mp_int_t x = mp_obj_get_int(args[1]);
mp_int_t y = mp_obj_get_int(args[2]);
mp_int_t w = mp_obj_get_int(args[3]);
@ -372,7 +382,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_hline_obj, 5, 5, framebuf_hl
STATIC mp_obj_t framebuf_vline(size_t n_args, const mp_obj_t *args) {
(void)n_args;
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args[0]);
mp_obj_framebuf_t *self = native_framebuf(args[0]);
mp_int_t x = mp_obj_get_int(args[1]);
mp_int_t y = mp_obj_get_int(args[2]);
mp_int_t h = mp_obj_get_int(args[3]);
@ -387,7 +397,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_vline_obj, 5, 5, framebuf_vl
STATIC mp_obj_t framebuf_rect(size_t n_args, const mp_obj_t *args) {
(void)n_args;
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args[0]);
mp_obj_framebuf_t *self = native_framebuf(args[0]);
mp_int_t x = mp_obj_get_int(args[1]);
mp_int_t y = mp_obj_get_int(args[2]);
mp_int_t w = mp_obj_get_int(args[3]);
@ -406,7 +416,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_rect_obj, 6, 6, framebuf_rec
STATIC mp_obj_t framebuf_line(size_t n_args, const mp_obj_t *args) {
(void)n_args;
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args[0]);
mp_obj_framebuf_t *self = native_framebuf(args[0]);
mp_int_t x1 = mp_obj_get_int(args[1]);
mp_int_t y1 = mp_obj_get_int(args[2]);
mp_int_t x2 = mp_obj_get_int(args[3]);
@ -470,8 +480,8 @@ STATIC mp_obj_t framebuf_line(size_t n_args, const mp_obj_t *args) {
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_line_obj, 6, 6, framebuf_line);
STATIC mp_obj_t framebuf_blit(size_t n_args, const mp_obj_t *args) {
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args[0]);
mp_obj_framebuf_t *source = MP_OBJ_TO_PTR(args[1]);
mp_obj_framebuf_t *self = native_framebuf(args[0]);
mp_obj_framebuf_t *source = native_framebuf(args[1]);
mp_int_t x = mp_obj_get_int(args[2]);
mp_int_t y = mp_obj_get_int(args[3]);
mp_int_t key = -1;
@ -513,7 +523,7 @@ STATIC mp_obj_t framebuf_blit(size_t n_args, const mp_obj_t *args) {
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(framebuf_blit_obj, 4, 5, framebuf_blit);
STATIC mp_obj_t framebuf_scroll(mp_obj_t self_in, mp_obj_t xstep_in, mp_obj_t ystep_in) {
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(self_in);
mp_obj_framebuf_t *self = native_framebuf(self_in);
mp_int_t xstep = mp_obj_get_int(xstep_in);
mp_int_t ystep = mp_obj_get_int(ystep_in);
int sx, y, xend, yend, dx, dy;
@ -546,7 +556,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(framebuf_scroll_obj, framebuf_scroll);
STATIC mp_obj_t framebuf_text(size_t n_args, const mp_obj_t *args) {
// extract arguments
mp_obj_framebuf_t *self = MP_OBJ_TO_PTR(args[0]);
mp_obj_framebuf_t *self = native_framebuf(args[0]);
const char *str = mp_obj_str_get_str(args[1]);
mp_int_t x0 = mp_obj_get_int(args[2]);
mp_int_t y0 = mp_obj_get_int(args[3]);

@ -345,14 +345,21 @@ STATIC mp_obj_t fat_vfs_stat(mp_obj_t vfs_in, mp_obj_t path_in) {
} else {
mode |= MP_S_IFREG;
}
mp_uint_t seconds = timeutils_seconds_since_epoch(
1980 + ((fno.fdate >> 9) & 0x7f),
(fno.fdate >> 5) & 0x0f,
fno.fdate & 0x1f,
(fno.ftime >> 11) & 0x1f,
(fno.ftime >> 5) & 0x3f,
2 * (fno.ftime & 0x1f)
);
#if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_NONE
// On non-longint builds, the number of seconds since 1970 (epoch) is too
// large to fit in a smallint, so just return 31-DEC-1999 (0).
mp_obj_t seconds = MP_OBJ_NEW_SMALL_INT(946684800);
#else
mp_obj_t seconds = mp_obj_new_int_from_uint(
timeutils_seconds_since_epoch(
1980 + ((fno.fdate >> 9) & 0x7f),
(fno.fdate >> 5) & 0x0f,
fno.fdate & 0x1f,
(fno.ftime >> 11) & 0x1f,
(fno.ftime >> 5) & 0x3f,
2 * (fno.ftime & 0x1f)
));
#endif
t->items[0] = MP_OBJ_NEW_SMALL_INT(mode); // st_mode
t->items[1] = MP_OBJ_NEW_SMALL_INT(0); // st_ino
t->items[2] = MP_OBJ_NEW_SMALL_INT(0); // st_dev
@ -360,9 +367,9 @@ STATIC mp_obj_t fat_vfs_stat(mp_obj_t vfs_in, mp_obj_t path_in) {
t->items[4] = MP_OBJ_NEW_SMALL_INT(0); // st_uid
t->items[5] = MP_OBJ_NEW_SMALL_INT(0); // st_gid
t->items[6] = mp_obj_new_int_from_uint(fno.fsize); // st_size
t->items[7] = mp_obj_new_int_from_uint(seconds); // st_atime
t->items[8] = mp_obj_new_int_from_uint(seconds); // st_mtime
t->items[9] = mp_obj_new_int_from_uint(seconds); // st_ctime
t->items[7] = seconds; // st_atime
t->items[8] = seconds; // st_mtime
t->items[9] = seconds; // st_ctime
return MP_OBJ_FROM_PTR(t);
}

@ -28,6 +28,7 @@
#if MICROPY_VFS && MICROPY_VFS_FAT
#include <stdio.h>
#include <string.h>
#include "py/runtime.h"
#include "py/stream.h"
@ -199,7 +200,7 @@ STATIC mp_obj_t file_open(fs_user_mount_t *vfs, const mp_obj_type_t *type, mp_ar
FRESULT res = f_open(&vfs->fatfs, &o->fp, fname, mode);
if (res != FR_OK) {
m_del_obj(pyb_file_obj_t, o);
mp_raise_OSError(fresult_to_errno_table[res]);
mp_raise_OSError_errno_str(fresult_to_errno_table[res], args[0].u_obj);
}
// If we're reading, turn on fast seek.
if (mode == FA_READ) {

@ -1 +1 @@
Subproject commit 805d41a021c70df7609da772a6f6131810e5d6ba
Subproject commit 0b0d1e999a6c7944e55bed59a30ccc21b3c96666

@ -1 +1 @@
Subproject commit 82ba9e40dfff41fdc0541636afde4936c930d86c
Subproject commit 2cf0f40ab818fddbc2cecf3ec495ed16067c5f7e

@ -1 +1 @@
Subproject commit 5534662902a223ac8562e6f999d6359e4c17dab1
Subproject commit 09bd10e94894a4eec7e3a02b51ffb5d8581b3024

@ -1 +1 @@
Subproject commit 01e89a8437c78b62d4d655c745ded57e26dc747a
Subproject commit 84eadeafa9144829b8c6faf903b4282d58a77353

@ -1 +1 @@
Subproject commit 2d1dce6ad6ca7e091fd8b5c3f102693c24af8b88
Subproject commit f044548d6d3aa21650b50232bb16e0b29f540b8f

@ -1 +1 @@
Subproject commit 8b7611a2cc076a2ac1b368c70227519f69f1e3e9
Subproject commit 9dac9628e48675308d447b70b2005f7d1f0ddf6b

@ -1 +1 @@
Subproject commit 53146ab2e82c318c3c37bd76bac34035a597b311
Subproject commit 42a55eafcb29f563b31e23af902c31dac8289900

@ -1 +1 @@
Subproject commit f69fc9b47fa25ba1414eb3d5c82f05013280c0d2
Subproject commit ddcd1e7154f1b27f9a87daffb6e691e1e7051b64

@ -1 +1 @@
Subproject commit ff99d55115f81899902c2c4a84fdfbea9ae83823
Subproject commit 10db851c81873fd8db207ff0c4d9342426ee25a4

@ -0,0 +1 @@
Subproject commit c525eedeb0d20c9829febfbf621eab707da71f8a

@ -1 +1 @@
Subproject commit dd0fe8530a2dcc64ac95bb3e116af2158dcd7cd2
Subproject commit efd548b1e36c534bbce494f4cb0d9a625dd170cd

@ -1 +1 @@
Subproject commit 2e5aedf18eb417a4120d4998ac1f387a4f600730
Subproject commit ac83a3dc703ec50b2236c773d22c47a0c0aaba43

@ -1 +1 @@
Subproject commit ea5e445edd4441cacd207aa2d2bfd724b813a253
Subproject commit dc01285aa45dd8260bb3ae35a657e4cdcbf325b8

@ -1 +1 @@
Subproject commit 8d5cc384058b1cb296aaeab86fb8405042d547ed
Subproject commit 19a66d79f0650a15e502464b42e16692365eab36

@ -206,7 +206,7 @@ int readline_process_char(int c) {
redraw_step_forward = compl_len;
}
#endif
} else if (32 <= c && c <= 126) {
} else if (32 <= c ) {
// printable character
vstr_ins_char(rl.line, rl.cursor_pos, c);
// set redraw parameters

@ -1 +1 @@
Subproject commit dda4c9a94b509238faa7b5ab5b9464c1d2e63ff0
Subproject commit 1f95f439e11f519e69d75a4a8b7b9f28eaf5060e

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-07 14:31-0800\n"
"POT-Creation-Date: 2020-02-19 08:44+0000\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"
@ -273,6 +273,7 @@ msgstr "Semua timer untuk pin ini sedang digunakan"
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
#: ports/cxd56/common-hal/pulseio/PulseOut.c
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#: ports/nrf/common-hal/pulseio/PulseOut.c shared-bindings/pulseio/PWMOut.c
#: shared-module/_pew/PewPew.c
@ -283,6 +284,12 @@ msgstr "Semua timer sedang digunakan"
msgid "Already advertising."
msgstr ""
#: ports/cxd56/common-hal/analogio/AnalogIn.c
msgid "AnalogIn not supported on given pin"
msgstr ""
#: ports/cxd56/common-hal/analogio/AnalogOut.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogOut.c
#: ports/nrf/common-hal/analogio/AnalogOut.c
msgid "AnalogOut functionality not supported"
msgstr "fungsionalitas AnalogOut tidak didukung"
@ -296,6 +303,7 @@ msgid "AnalogOut not supported on given pin"
msgstr "pin yang dipakai tidak mendukung AnalogOut"
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
#: ports/cxd56/common-hal/pulseio/PulseOut.c
msgid "Another send is already active"
msgstr "Send yang lain sudah aktif"
@ -410,6 +418,7 @@ msgid "Cannot delete values"
msgstr ""
#: ports/atmel-samd/common-hal/digitalio/DigitalInOut.c
#: ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c
#: ports/nrf/common-hal/digitalio/DigitalInOut.c
msgid "Cannot get pull while in output mode"
msgstr "Tidak bisa mendapatkan pull pada saat mode output"
@ -442,6 +451,8 @@ msgid "Cannot remount '/' when USB is active."
msgstr ""
#: ports/atmel-samd/common-hal/microcontroller/__init__.c
#: ports/cxd56/common-hal/microcontroller/__init__.c
#: ports/mimxrt10xx/common-hal/microcontroller/__init__.c
msgid "Cannot reset into bootloader because no bootloader is present."
msgstr ""
"Tidak dapat melakukan reset ke bootloader karena tidak ada bootloader yang "
@ -451,6 +462,10 @@ msgstr ""
msgid "Cannot set value when direction is input."
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Cannot specify RTS or CTS in RS485 mode"
msgstr ""
#: py/objslice.c
msgid "Cannot subclass slice"
msgstr ""
@ -463,6 +478,10 @@ msgstr ""
msgid "Cannot unambiguously get sizeof scalar"
msgstr "tidak dapat mendapatkan ukuran scalar secara tidak ambigu"
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr ""
@ -497,11 +516,8 @@ msgstr "Clock unit sedang digunakan"
msgid "Column entry must be digitalio.DigitalInOut"
msgstr ""
#: shared-bindings/displayio/I2CDisplay.c
msgid "Command must be 0-255"
msgstr ""
#: shared-bindings/displayio/FourWire.c shared-bindings/displayio/ParallelBus.c
#: shared-bindings/displayio/FourWire.c shared-bindings/displayio/I2CDisplay.c
#: shared-bindings/displayio/ParallelBus.c
msgid "Command must be an int between 0 and 255"
msgstr ""
@ -519,25 +535,53 @@ msgstr ""
msgid "Corrupt raw code"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c
#: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c
msgid "Could not initialize UART"
msgstr "Tidak dapat menginisialisasi UART"
#: shared-module/audiomp3/MP3File.c
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Could not initialize channel"
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Could not initialize timer"
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Could not re-init channel"
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Could not re-init timer"
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Could not restart PWM"
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Could not start PWM"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "Could not start interrupt, RX busy"
msgstr ""
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate decoder"
msgstr ""
#: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c
#: shared-module/audiomp3/MP3File.c
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate first buffer"
msgstr ""
#: shared-module/audiomp3/MP3File.c
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate input buffer"
msgstr ""
#: shared-module/audiocore/WaveFile.c shared-module/audiomixer/Mixer.c
#: shared-module/audiomp3/MP3File.c
#: shared-module/audiomp3/MP3Decoder.c
msgid "Couldn't allocate second buffer"
msgstr ""
@ -545,6 +589,14 @@ msgstr ""
msgid "Crash into the HardFault_Handler."
msgstr ""
#: ports/stm32f4/common-hal/analogio/AnalogOut.c
msgid "DAC Channel Init Error"
msgstr ""
#: ports/stm32f4/common-hal/analogio/AnalogOut.c
msgid "DAC Device Init Error"
msgstr ""
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
msgid "DAC already in use"
msgstr "DAC sudah digunakan"
@ -571,6 +623,10 @@ msgstr ""
msgid "Device in use"
msgstr ""
#: ports/cxd56/common-hal/digitalio/DigitalInOut.c
msgid "DigitalInOut not supported on given pin"
msgstr ""
#: shared-bindings/displayio/Display.c
msgid "Display must have a 16 bit colorspace."
msgstr ""
@ -587,6 +643,7 @@ msgstr ""
#: 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/cxd56/common-hal/pulseio/PulseIn.c
msgid "EXTINT channel already in use"
msgstr "Channel EXTINT sedang digunakan"
@ -605,10 +662,6 @@ msgstr ""
msgid "Expected a Characteristic"
msgstr ""
#: shared-bindings/_pixelbuf/__init__.c
msgid "Expected a PixelBuf instance"
msgstr ""
#: shared-bindings/_bleio/Characteristic.c
msgid "Expected a Service"
msgstr ""
@ -627,6 +680,10 @@ msgstr ""
msgid "Expected tuple of length %d, got %d"
msgstr ""
#: ports/nrf/common-hal/_bleio/Adapter.c
msgid "Extended advertisements with scan response not supported."
msgstr ""
#: shared-bindings/ps2io/Ps2.c
msgid "Failed sending command."
msgstr ""
@ -636,11 +693,13 @@ msgstr ""
msgid "Failed to acquire mutex, err 0x%04x"
msgstr "Gagal untuk mendapatkan mutex, status: 0x%08lX"
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "Failed to allocate RX buffer"
msgstr "Gagal untuk mengalokasikan buffer RX"
#: ports/atmel-samd/common-hal/busio/UART.c
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
#: ports/nrf/common-hal/pulseio/PulseIn.c
#, c-format
msgid "Failed to allocate RX buffer of %d bytes"
@ -654,7 +713,7 @@ msgstr ""
msgid "Failed to connect: timeout"
msgstr ""
#: shared-module/audiomp3/MP3File.c
#: shared-module/audiomp3/MP3Decoder.c
msgid "Failed to parse MP3 file"
msgstr ""
@ -671,14 +730,14 @@ msgstr ""
msgid "File exists"
msgstr ""
#: ports/nrf/common-hal/nvm/ByteArray.c
msgid "Flash write failed"
msgstr ""
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
msgid "Frequency captured is above capability. Capture Paused."
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Frequency must match existing PWMOut using this timer"
msgstr ""
#: shared-bindings/bitbangio/I2C.c shared-bindings/bitbangio/SPI.c
#: shared-bindings/busio/I2C.c shared-bindings/busio/SPI.c
msgid "Function requires lock"
@ -693,10 +752,22 @@ msgstr ""
msgid "Group full"
msgstr ""
#: ports/stm32f4/common-hal/busio/I2C.c ports/stm32f4/common-hal/busio/SPI.c
msgid "Hardware busy, try alternative pins"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "Hardware in use, try alternative pins"
msgstr ""
#: extmod/vfs_posix_file.c py/objstringio.c
msgid "I/O operation on closed file"
msgstr "operasi I/O pada file tertutup"
#: ports/stm32f4/common-hal/busio/I2C.c
msgid "I2C Init Error"
msgstr ""
#: extmod/machine_i2c.c
msgid "I2C operation not supported"
msgstr "operasi I2C tidak didukung"
@ -723,20 +794,46 @@ msgstr ""
msgid "Insufficient encryption"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "Internal define error"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Invalid %q pin"
msgstr "%q pada tidak valid"
#: ports/stm32f4/common-hal/analogio/AnalogIn.c
msgid "Invalid ADC Unit value"
msgstr ""
#: shared-module/displayio/OnDiskBitmap.c
msgid "Invalid BMP file"
msgstr ""
#: ports/stm32f4/common-hal/analogio/AnalogOut.c
msgid "Invalid DAC pin supplied"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/I2C.c ports/stm32f4/common-hal/busio/I2C.c
msgid "Invalid I2C pin selection"
msgstr ""
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c
#: ports/cxd56/common-hal/pulseio/PWMOut.c
#: ports/nrf/common-hal/pulseio/PWMOut.c shared-bindings/pulseio/PWMOut.c
msgid "Invalid PWM frequency"
msgstr "Frekuensi PWM tidak valid"
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm32f4/common-hal/busio/SPI.c
msgid "Invalid SPI pin selection"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/UART.c
#: ports/stm32f4/common-hal/busio/UART.c
msgid "Invalid UART pin selection"
msgstr ""
#: py/moduerrno.c
msgid "Invalid argument"
msgstr ""
@ -745,7 +842,7 @@ msgstr ""
msgid "Invalid bits per value"
msgstr ""
#: ports/nrf/common-hal/busio/UART.c
#: ports/nrf/common-hal/busio/UART.c ports/stm32f4/common-hal/busio/UART.c
msgid "Invalid buffer size"
msgstr "Ukuran buffer tidak valid"
@ -773,6 +870,14 @@ msgstr ""
msgid "Invalid format chunk size"
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Invalid frequency supplied"
msgstr ""
#: supervisor/shared/safe_mode.c
msgid "Invalid memory access."
msgstr ""
#: shared-bindings/bitbangio/SPI.c shared-bindings/busio/SPI.c
msgid "Invalid number of bits"
msgstr ""
@ -799,7 +904,9 @@ msgstr "Pin untuk channel kanan tidak valid"
#: ports/atmel-samd/common-hal/busio/SPI.c
#: ports/atmel-samd/common-hal/busio/UART.c
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
#: ports/nrf/common-hal/busio/I2C.c
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Invalid pins"
msgstr "Pin-pin tidak valid"
@ -831,6 +938,10 @@ msgstr ""
msgid "Invalid wave file"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "Invalid word/bit length"
msgstr ""
#: py/compile.c
msgid "LHS of keyword arg must be an id"
msgstr "LHS dari keyword arg harus menjadi sebuah id"
@ -876,10 +987,18 @@ msgstr ""
msgid "Microphone startup delay must be in range 0.0 to 1.0"
msgstr ""
#: ports/stm32f4/common-hal/busio/SPI.c
msgid "Missing MISO or MOSI Pin"
msgstr ""
#: shared-bindings/displayio/Group.c
msgid "Must be a %q subclass."
msgstr ""
#: ports/stm32f4/common-hal/busio/SPI.c
msgid "Must provide MISO or MOSI pin"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "Negative step not supported"
msgstr ""
@ -889,6 +1008,7 @@ msgid "No CCCD for this Characteristic"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c
#: ports/stm32f4/common-hal/analogio/AnalogOut.c
msgid "No DAC on chip"
msgstr "Tidak ada DAC (Digital Analog Converter) di dalam chip"
@ -897,11 +1017,23 @@ msgstr "Tidak ada DAC (Digital Analog Converter) di dalam chip"
msgid "No DMA channel found"
msgstr "tidak ada channel DMA ditemukan"
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
#: ports/stm32f4/common-hal/busio/SPI.c
msgid "No MISO Pin"
msgstr ""
#: ports/stm32f4/common-hal/busio/SPI.c
msgid "No MOSI Pin"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
#: ports/stm32f4/common-hal/busio/UART.c
msgid "No RX pin"
msgstr "Tidak pin RX"
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
#: ports/atmel-samd/common-hal/busio/UART.c
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
#: ports/stm32f4/common-hal/busio/UART.c
msgid "No TX pin"
msgstr "Tidak ada pin TX"
@ -930,6 +1062,10 @@ msgstr ""
msgid "No hardware support on pin"
msgstr "Tidak ada dukungan hardware untuk pin"
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "No more timers available on this pin."
msgstr ""
#: shared-module/touchio/TouchIn.c
msgid "No pulldown on pin; 1Mohm recommended"
msgstr ""
@ -997,19 +1133,22 @@ msgid ""
"PWM frequency not writable when variable_frequency is False on construction."
msgstr ""
#: ports/stm32f4/common-hal/displayio/ParallelBus.c
msgid "ParallelBus not yet supported"
msgstr ""
#: py/moduerrno.c
msgid "Permission denied"
msgstr ""
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c
#: ports/cxd56/common-hal/analogio/AnalogIn.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogIn.c
#: ports/nrf/common-hal/analogio/AnalogIn.c
#: ports/stm32f4/common-hal/analogio/AnalogIn.c
msgid "Pin does not have ADC capabilities"
msgstr "Pin tidak mempunya kemampuan untuk ADC (Analog Digital Converter)"
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "Pixel beyond bounds of buffer"
msgstr ""
#: py/builtinhelp.c
msgid "Plus any modules on the filesystem\n"
msgstr "Tambahkan module apapun pada filesystem\n"
@ -1032,6 +1171,27 @@ msgstr ""
msgid "Pull not used when direction is output."
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PulseIn.c
msgid "PulseIn not yet supported"
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PulseOut.c
msgid "PulseOut not yet supported"
msgstr ""
#: ports/stm32f4/common-hal/os/__init__.c
msgid "RNG DeInit Error"
msgstr ""
#: ports/stm32f4/common-hal/os/__init__.c
msgid "RNG Init Error"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "RS485 inversion specified when not in RS485 mode"
msgstr ""
#: ports/cxd56/common-hal/rtc/RTC.c ports/mimxrt10xx/common-hal/rtc/RTC.c
#: ports/nrf/common-hal/rtc/RTC.c
msgid "RTC calibration is not supported on this board"
msgstr ""
@ -1040,8 +1200,13 @@ msgstr ""
msgid "RTC is not supported on this board"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "Range out of bounds"
#: ports/atmel-samd/common-hal/busio/UART.c ports/cxd56/common-hal/busio/UART.c
#: ports/nrf/common-hal/busio/UART.c ports/stm32f4/common-hal/busio/UART.c
msgid "RTS/CTS/RS485 Not yet supported on this device"
msgstr ""
#: ports/stm32f4/common-hal/os/__init__.c
msgid "Random number generation error"
msgstr ""
#: shared-bindings/pulseio/PulseIn.c
@ -1082,6 +1247,14 @@ msgstr ""
msgid "SDA or SCL needs a pull up"
msgstr "SDA atau SCL membutuhkan pull up"
#: ports/stm32f4/common-hal/busio/SPI.c
msgid "SPI Init Error"
msgstr ""
#: ports/stm32f4/common-hal/busio/SPI.c
msgid "SPI Re-initialization error"
msgstr ""
#: shared-bindings/audiomixer/Mixer.c
msgid "Sample rate must be positive"
msgstr ""
@ -1095,6 +1268,14 @@ msgstr "Nilai sampel terlalu tinggi. Nilai harus kurang dari %d"
msgid "Scan already in progess. Stop with stop_scan."
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Selected CTS pin not valid"
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Selected RTS pin not valid"
msgstr ""
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c
msgid "Serializer in use"
@ -1121,6 +1302,14 @@ msgstr ""
msgid "Stream missing readinto() or write() method."
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "Supply at least one UART pin"
msgstr ""
#: ports/stm32f4/common-hal/microcontroller/Processor.c
msgid "Temperature read timed out"
msgstr ""
#: supervisor/shared/safe_mode.c
msgid ""
"The CircuitPython heap was corrupted because the stack was too small.\n"
@ -1194,6 +1383,26 @@ msgstr ""
msgid "Tuple or struct_time argument required"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "UART Buffer allocation error"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "UART De-init error"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "UART Init Error"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "UART Re-init error"
msgstr ""
#: ports/stm32f4/common-hal/busio/UART.c
msgid "UART write error"
msgstr ""
#: shared-module/usb_hid/Device.c
msgid "USB Busy"
msgstr ""
@ -1275,7 +1484,7 @@ msgid ""
"declined or ignored."
msgstr ""
#: ports/atmel-samd/common-hal/busio/I2C.c
#: ports/atmel-samd/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/I2C.c
msgid "Unsupported baudrate"
msgstr "Baudrate tidak didukung"
@ -1310,6 +1519,10 @@ msgstr ""
msgid "Viper functions don't currently support more than 4 arguments"
msgstr ""
#: ports/stm32f4/common-hal/microcontroller/Processor.c
msgid "Voltage read timed out"
msgstr ""
#: main.c
msgid "WARNING: Your code filename has two extensions\n"
msgstr "PERINGATAN: Nama file kode anda mempunyai dua ekstensi\n"
@ -1437,11 +1650,6 @@ msgstr ""
msgid "branch not in range"
msgstr ""
#: shared-bindings/_pixelbuf/PixelBuf.c
#, c-format
msgid "buf is too small. need %d bytes"
msgstr ""
#: shared-bindings/audiocore/RawSample.c
msgid "buffer must be a bytes-like object"
msgstr ""
@ -1670,7 +1878,7 @@ msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)"
msgstr ""
#: shared-bindings/displayio/Palette.c
msgid "color buffer must be a buffer or int"
msgid "color buffer must be a buffer, tuple, list, or int"
msgstr ""
#: shared-bindings/displayio/Palette.c
@ -1800,7 +2008,7 @@ msgstr "argumen keyword ekstra telah diberikan"
msgid "extra positional arguments given"
msgstr "argumen posisi ekstra telah diberikan"
#: shared-bindings/audiocore/WaveFile.c shared-bindings/audiomp3/MP3File.c
#: shared-bindings/audiocore/WaveFile.c shared-bindings/audiomp3/MP3Decoder.c
#: shared-bindings/displayio/OnDiskBitmap.c
msgid "file must be a file opened in byte mode"
msgstr ""
@ -1910,6 +2118,7 @@ msgid "incorrect padding"
msgstr "lapisan (padding) tidak benar"
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
#: ports/nrf/common-hal/pulseio/PulseIn.c py/obj.c
msgid "index out of range"
msgstr "index keluar dari jangkauan"
@ -2303,6 +2512,7 @@ msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter"
msgstr ""
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
#: ports/cxd56/common-hal/pulseio/PulseIn.c
#: ports/nrf/common-hal/pulseio/PulseIn.c
msgid "pop from an empty PulseIn"
msgstr "Muncul dari PulseIn yang kosong"
@ -2331,10 +2541,6 @@ msgstr ""
msgid "queue overflow"
msgstr "antrian meluap (overflow)"
#: shared-bindings/_pixelbuf/PixelBuf.c
msgid "rawbuf is not the same size as buf"
msgstr ""
#: py/builtinimport.c
msgid "relative import"
msgstr "relative import"
@ -2509,7 +2715,8 @@ msgstr ""
msgid "tuple/list required on RHS"
msgstr ""
#: ports/atmel-samd/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
#: ports/atmel-samd/common-hal/busio/UART.c
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/UART.c
msgid "tx and rx cannot both be None"
msgstr "tx dan rx keduanya tidak boleh kosong"
@ -2567,16 +2774,6 @@ msgstr ""
msgid "unknown format code '%c' for object of type '%s'"
msgstr ""
#: py/objstr.c
#, c-format
msgid "unknown format code '%c' for object of type 'float'"
msgstr ""
#: py/objstr.c
#, c-format
msgid "unknown format code '%c' for object of type 'str'"
msgstr ""
#: py/compile.c
msgid "unknown type"
msgstr "tipe tidak diketahui"

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-07 14:31-0800\n"
"POT-Creation-Date: 2020-02-19 08:44+0000\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"
@ -271,6 +271,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
#: ports/cxd56/common-hal/pulseio/PulseOut.c
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
#: ports/nrf/common-hal/pulseio/PulseOut.c shared-bindings/pulseio/PWMOut.c
#: shared-module/_pew/PewPew.c
@ -281,6 +282,12 @@ msgstr ""
msgid "Already advertising."
msgstr ""
#: ports/cxd56/common-hal/analogio/AnalogIn.c
msgid "AnalogIn not supported on given pin"
msgstr ""
#: ports/cxd56/common-hal/analogio/AnalogOut.c
#: ports/mimxrt10xx/common-hal/analogio/AnalogOut.c
#: ports/nrf/common-hal/analogio/AnalogOut.c
msgid "AnalogOut functionality not supported"
msgstr ""
@ -294,6 +301,7 @@ msgid "AnalogOut not supported on given pin"
msgstr ""
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
#: ports/cxd56/common-hal/pulseio/PulseOut.c
msgid "Another send is already active"
msgstr ""
@ -405,6 +413,7 @@ msgid "Cannot delete values"
msgstr ""
#: ports/atmel-samd/common-hal/digitalio/DigitalInOut.c
#: ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c
#: ports/nrf/common-hal/digitalio/DigitalInOut.c
msgid "Cannot get pull while in output mode"
msgstr ""
@ -434,6 +443,8 @@ msgid "Cannot remount '/' when USB is active."
msgstr ""
#: ports/atmel-samd/common-hal/microcontroller/__init__.c
#: ports/cxd56/common-hal/microcontroller/__init__.c
#: ports/mimxrt10xx/common-hal/microcontroller/__init__.c
msgid "Cannot reset into bootloader because no bootloader is present."
msgstr ""
@ -441,6 +452,10 @@ msgstr ""
msgid "Cannot set value when direction is input."
msgstr ""
#: ports/mimxrt10xx/common-hal/busio/UART.c
msgid "Cannot specify RTS or CTS in RS485 mode"
msgstr ""
#: py/objslice.c
msgid "Cannot subclass slice"
msgstr ""
@ -453,6 +468,10 @@ msgstr ""
msgid "Cannot unambiguously get sizeof scalar"
msgstr ""
#: ports/stm32f4/common-hal/pulseio/PWMOut.c
msgid "Cannot vary frequency on a timer that is already in use"
msgstr ""
#: shared-module/bitbangio/SPI.c
msgid "Cannot write without MOSI pin."
msgstr ""
@ -487,11 +506,8 @@ msgstr ""
msgid "Column entry must be digitalio.DigitalInOut"
msgstr ""
#: shared-bindings/displayio/I2CDisplay.c
msgid "Command must be 0-255"
msgstr ""
#: shared-bindings/displayio/FourWire.c shared-bindings/displayio/ParallelBus.c
#: shared-bindings/displayio/FourWire.c shared-bindings/displayio/I2CDisplay.c
#: shared-bindings/displayio/ParallelBus.c
msgid "Command must be an int between 0 and 255"
msgstr ""